remove "new TenantQuotaController"

This commit is contained in:
Anton Suhorukov 2022-10-20 16:19:20 +03:00
parent 0da6992414
commit 00d5c50c5e
2 changed files with 20 additions and 7 deletions

View File

@ -179,7 +179,11 @@ public class StorageFactory
{ {
int.TryParse(tenant, out var tenantId); int.TryParse(tenant, out var tenantId);
return GetStorage(configpath, tenant, module, new TenantQuotaController(tenantId, _tenantManager, _authContext, _maxFileSizeChecker, _maxTotalSizeChecker));
var tenantQuotaController = _serviceProvider.GetService<TenantQuotaController>();
tenantQuotaController.Init(tenantId);
return GetStorage(configpath, tenant, module, tenantQuotaController);
} }
public IDataStore GetStorage(string configpath, string tenant, string module, IQuotaController controller) public IDataStore GetStorage(string configpath, string tenant, string module, IQuotaController controller)
@ -226,7 +230,10 @@ public class StorageFactory
int.TryParse(tenant, out var tenantId); int.TryParse(tenant, out var tenantId);
return GetDataStore(tenant, module, consumer, new TenantQuotaController(tenantId, _tenantManager, _authContext, _maxFileSizeChecker, _maxTotalSizeChecker)); var tenantQuotaController = _serviceProvider.GetService<TenantQuotaController>();
tenantQuotaController.Init(tenantId);
return GetDataStore(tenant, module, consumer, tenantQuotaController);
} }
private IDataStore GetDataStore(string tenant, string module, DataStoreConsumer consumer, IQuotaController controller) private IDataStore GetDataStore(string tenant, string module, DataStoreConsumer consumer, IQuotaController controller)
@ -271,5 +278,6 @@ public static class StorageFactoryExtension
services.TryAdd<GoogleCloudStorage>(); services.TryAdd<GoogleCloudStorage>();
services.TryAdd<RackspaceCloudStorage>(); services.TryAdd<RackspaceCloudStorage>();
services.TryAdd<S3Storage>(); services.TryAdd<S3Storage>();
services.TryAdd<TenantQuotaController>();
} }
} }

View File

@ -26,6 +26,7 @@
namespace ASC.Data.Storage; namespace ASC.Data.Storage;
[Transient]
public class TenantQuotaController : IQuotaController public class TenantQuotaController : IQuotaController
{ {
private long CurrentSize private long CurrentSize
@ -42,24 +43,28 @@ public class TenantQuotaController : IQuotaController
set => _currentSize = value; set => _currentSize = value;
} }
private readonly int _tenant; private int _tenant;
private readonly TenantManager _tenantManager; private readonly TenantManager _tenantManager;
private readonly AuthContext _authContext; private readonly AuthContext _authContext;
private readonly TenantQuotaFeatureChecker<MaxFileSizeFeature, long> _maxFileSizeChecker; private readonly TenantQuotaFeatureChecker<MaxFileSizeFeature, long> _maxFileSizeChecker;
private readonly TenantQuotaFeatureChecker<MaxTotalSizeFeature, long> _maxTotalSizeChecker; private readonly TenantQuotaFeatureChecker<MaxTotalSizeFeature, long> _maxTotalSizeChecker;
private readonly Lazy<long> _lazyCurrentSize; private Lazy<long> _lazyCurrentSize;
private long _currentSize; private long _currentSize;
public TenantQuotaController(int tenant, TenantManager tenantManager, AuthContext authContext, TenantQuotaFeatureChecker<MaxFileSizeFeature, long> maxFileSizeChecker, TenantQuotaFeatureChecker<MaxTotalSizeFeature, long> maxTotalSizeChecker) public TenantQuotaController(TenantManager tenantManager, AuthContext authContext, TenantQuotaFeatureChecker<MaxFileSizeFeature, long> maxFileSizeChecker, TenantQuotaFeatureChecker<MaxTotalSizeFeature, long> maxTotalSizeChecker)
{ {
_tenant = tenant;
_tenantManager = tenantManager; _tenantManager = tenantManager;
_maxFileSizeChecker = maxFileSizeChecker; _maxFileSizeChecker = maxFileSizeChecker;
_maxTotalSizeChecker = maxTotalSizeChecker; _maxTotalSizeChecker = maxTotalSizeChecker;
_authContext = authContext;
}
public void Init(int tenant)
{
_tenant = tenant;
_lazyCurrentSize = new Lazy<long>(() => _tenantManager.FindTenantQuotaRows(tenant) _lazyCurrentSize = new Lazy<long>(() => _tenantManager.FindTenantQuotaRows(tenant)
.Where(r => UsedInQuota(r.Tag)) .Where(r => UsedInQuota(r.Tag))
.Sum(r => r.Counter)); .Sum(r => r.Counter));
_authContext = authContext;
} }
public void QuotaUsedAdd(string module, string domain, string dataTag, long size, bool quotaCheckFileSize = true) public void QuotaUsedAdd(string module, string domain, string dataTag, long size, bool quotaCheckFileSize = true)