11using BotSharp . Abstraction . Infrastructures ;
2+ using BotSharp . Abstraction . MultiTenancy ;
23using Microsoft . AspNetCore . Http ;
34using Microsoft . Extensions . DependencyInjection ;
45using Rougamo ;
@@ -76,7 +77,7 @@ public virtual Task<bool> IsOutOfDate(MethodContext context, object value)
7677 private string GetCacheKey ( MethodContext context )
7778 {
7879 var prefixKey = GetPrefixKey ( context . Method . Name ) ;
79- var argsKey = string . Join ( "_" , context . Arguments . Select ( arg => GetCacheKeyByArg ( arg ) ) ) ;
80+ var argsKey = string . Join ( "_" , context . Arguments . Select ( arg => GetCacheKeyByArg ( arg ) ) ) ;
8081
8182 if ( _perInstanceCache && context . Target != null )
8283 {
@@ -85,22 +86,41 @@ private string GetCacheKey(MethodContext context)
8586 else
8687 {
8788 return $ "{ prefixKey } _{ argsKey } ";
88- }
89+ }
8990 }
9091
9192 private string GetPrefixKey ( string name )
9293 {
94+ var tenantId = GetTenantId ( ) ;
95+ if ( ! string . IsNullOrWhiteSpace ( tenantId ) )
96+ {
97+ return $ "{ _settings . Prefix } :{ tenantId } :{ name } ";
98+ }
99+
93100 return _settings . Prefix + ":" + name ;
94101 }
95102
103+ private string ? GetTenantId ( )
104+ {
105+ try
106+ {
107+ var tenant = Services . GetService < ICurrentTenant > ( ) ;
108+ return tenant ? . TenantId ;
109+ }
110+ catch
111+ {
112+ return null ;
113+ }
114+ }
115+
96116 private string GetCacheKeyByArg ( object ? arg )
97117 {
98118 if ( arg is null )
99119 {
100120 return NullMarker . GetHashCode ( ) . ToString ( ) ;
101121 }
102122 else if ( arg is ICacheKey withCacheKey )
103- {
123+ {
104124 return withCacheKey . GetCacheKey ( ) ;
105125 }
106126 else
@@ -110,7 +130,10 @@ private string GetCacheKeyByArg(object? arg)
110130 }
111131
112132 public async Task ClearCacheAsync ( )
113- {
114- await _cache . ClearCacheAsync ( _settings . Prefix ) ;
133+ {
134+ var tenantId = GetTenantId ( ) ;
135+ var prefix = string . IsNullOrWhiteSpace ( tenantId ) ? _settings . Prefix : $ "{ _settings . Prefix } :{ tenantId } ";
136+ await _cache . ClearCacheAsync ( prefix ) ;
115137 }
138+
116139}
0 commit comments