DI: configuration

This commit is contained in:
pavelbannov 2019-10-10 12:53:58 +03:00
parent 2ebe431c98
commit 42fe613918
6 changed files with 37 additions and 37 deletions

View File

@ -31,7 +31,9 @@ using System.Data.Common;
using System.Linq;
using System.Threading.Tasks;
using ASC.Common.Data.Sql;
using ASC.Common.Utils;
using Microsoft.Extensions.Configuration;
namespace ASC.Common.Data
{
public class MultiRegionalDbManager : IDbManager
@ -52,11 +54,11 @@ namespace ASC.Common.Data
}
public MultiRegionalDbManager(DbRegistry dbRegistry, string dbId)
public MultiRegionalDbManager(IConfiguration configuration, DbRegistry dbRegistry, string dbId)
{
const StringComparison cmp = StringComparison.InvariantCultureIgnoreCase;
DatabaseId = dbId;
databases = Utils.ConfigurationManager.ConnectionStrings
databases = configuration.GetConnectionStrings()
.Where(c => c.Name.Equals(dbId, cmp) || c.Name.StartsWith(dbId + ".", cmp))
.Select(
c =>
@ -83,9 +85,9 @@ namespace ASC.Common.Data
}
}
public static MultiRegionalDbManager FromHttpContext(DbRegistry dbRegistry, string databaseId)
public static MultiRegionalDbManager FromHttpContext(IConfiguration configuration, DbRegistry dbRegistry, string databaseId)
{
return new MultiRegionalDbManager(dbRegistry, databaseId);
return new MultiRegionalDbManager(configuration, dbRegistry, databaseId);
}
public IDbTransaction BeginTransaction(IsolationLevel isolationLevel)

View File

@ -36,7 +36,7 @@ namespace ASC.Common.Tests.Data
[Test]
public void ExecuteListTest()
{
using var db = new MultiRegionalDbManager(null, "core");
using var db = new MultiRegionalDbManager(null, null, "core");
var r1 = db.ExecuteList("select 1");
Assert.IsTrue(r1.Count > 1);
}

View File

@ -13,23 +13,18 @@ namespace ASC.Common.Utils
public static class ConfigurationManager
{
public static IConfiguration AppSettings { get; private set; }
public static ConnectionStringCollection ConnectionStrings { get; private set; }
public static LogManager LogManager { get; private set; }
public static void Init(IServiceProvider serviceProvider)
{
AppSettings = serviceProvider.GetService<IConfiguration>();
LogManager = serviceProvider.GetService<LogManager>();
ConnectionStrings = AppSettings.GetConnectionStrings();
}
public static void UseCm(this IApplicationBuilder applicationBuilder)
{
Init(applicationBuilder.ApplicationServices);
}
public static IEnumerable<T> GetSettings<T>(string section) where T : new()
{
return AppSettings.GetSettings<T>(section);
}
public static T GetSetting<T>(string section) where T : new()
{
return AppSettings.GetSetting<T>(section);

View File

@ -30,7 +30,6 @@ using System.Configuration;
using System.Linq;
using System.Security;
using ASC.Common.Data;
using ASC.Common.DependencyInjection;
using ASC.Common.Utils;
using ASC.Core.Billing;
using ASC.Core.Data;
@ -64,25 +63,20 @@ namespace ASC.Core
private set;
}
public HostedSolution(ConnectionStringSettings connectionString)
: this(connectionString, null)
public HostedSolution(IConfiguration configuration, TenantDomainValidator tenantDomainValidator, TimeZoneConverter timeZoneConverter, DbRegistry dbRegistry, ConnectionStringSettings connectionString)
: this(configuration, tenantDomainValidator, timeZoneConverter, dbRegistry, connectionString, null)
{
}
public HostedSolution(ConnectionStringSettings connectionString, string region)
{
var configuration = CommonServiceProvider.GetService<IConfiguration>();
var TenantDomainValidator = CommonServiceProvider.GetService<TenantDomainValidator>();
var TimeZoneConverter = CommonServiceProvider.GetService<TimeZoneConverter>();
var DbRegistry = CommonServiceProvider.GetService<DbRegistry>();
tenantService = new DbTenantService(connectionString, DbRegistry, TenantDomainValidator, TimeZoneConverter);
public HostedSolution(IConfiguration configuration, TenantDomainValidator tenantDomainValidator, TimeZoneConverter timeZoneConverter, DbRegistry dbRegistry, ConnectionStringSettings connectionString, string region)
{
tenantService = new DbTenantService(connectionString, dbRegistry, tenantDomainValidator, timeZoneConverter);
var baseSettings = new CoreBaseSettings(configuration);
var coreSettings = new CoreSettings(tenantService, baseSettings, configuration);
userService = new DbUserService(connectionString, DbRegistry);
quotaService = new DbQuotaService(connectionString, DbRegistry);
tariffService = new TariffService(connectionString, quotaService, tenantService, baseSettings, coreSettings, configuration, DbRegistry);
userService = new DbUserService(connectionString, dbRegistry);
quotaService = new DbQuotaService(connectionString, dbRegistry);
tariffService = new TariffService(connectionString, quotaService, tenantService, baseSettings, coreSettings, configuration, dbRegistry);
clientTenantManager = new TenantManager(tenantService, quotaService, tariffService, null, baseSettings, coreSettings);
settingsManager = new DbSettingsManager(connectionString);
Region = region ?? string.Empty;

View File

@ -45,13 +45,22 @@ namespace ASC.Core
private readonly string dbid;
public IConfiguration Configuraion { get; }
public TenantDomainValidator TenantDomainValidator { get; }
public TimeZoneConverter TimeZoneConverter { get; }
public InstanceCrypto InstanceCrypto { get; }
public DbRegistry DbRegistry { get; }
public MultiRegionHostedSolution(string dbid, IConfiguration configuraion, InstanceCrypto instanceCrypto, DbRegistry dbRegistry)
public MultiRegionHostedSolution(string dbid,
IConfiguration configuraion,
TenantDomainValidator tenantDomainValidator,
TimeZoneConverter timeZoneConverter,
InstanceCrypto instanceCrypto,
DbRegistry dbRegistry)
{
this.dbid = dbid;
Configuraion = configuraion;
TenantDomainValidator = tenantDomainValidator;
TimeZoneConverter = timeZoneConverter;
InstanceCrypto = instanceCrypto;
DbRegistry = dbRegistry;
Initialize();
@ -210,14 +219,14 @@ namespace ASC.Core
if (cs.Name.StartsWith(dbid + "."))
{
var name = cs.Name.Substring(dbid.Length + 1);
regions[name] = new HostedSolution(cs, name);
regions[name] = new HostedSolution(Configuraion, TenantDomainValidator, TimeZoneConverter, DbRegistry, cs, name);
}
}
regions[dbid] = new HostedSolution(dbConnectionStrings);
regions[dbid] = new HostedSolution(Configuraion, TenantDomainValidator, TimeZoneConverter, DbRegistry, dbConnectionStrings);
if (!regions.ContainsKey(string.Empty))
{
regions[string.Empty] = new HostedSolution(dbConnectionStrings);
regions[string.Empty] = new HostedSolution(Configuraion, TenantDomainValidator, TimeZoneConverter, DbRegistry, dbConnectionStrings);
}
}
else
@ -229,16 +238,16 @@ namespace ASC.Core
if (cs.Name.StartsWith(dbid + "."))
{
var name = cs.Name.Substring(dbid.Length + 1);
regions[name] = new HostedSolution(cs, name);
regions[name] = new HostedSolution(Configuraion, TenantDomainValidator, TimeZoneConverter, DbRegistry, cs, name);
find = true;
}
}
if (find)
{
regions[dbid] = new HostedSolution(dbConnectionStrings);
regions[dbid] = new HostedSolution(Configuraion, TenantDomainValidator, TimeZoneConverter, DbRegistry, dbConnectionStrings);
if (!regions.ContainsKey(string.Empty))
{
regions[string.Empty] = new HostedSolution(dbConnectionStrings);
regions[string.Empty] = new HostedSolution(Configuraion, TenantDomainValidator, TimeZoneConverter, DbRegistry, dbConnectionStrings);
}
}
else
@ -263,10 +272,10 @@ namespace ASC.Core
if (!regions.ContainsKey(string.Empty))
{
regions[string.Empty] = new HostedSolution(cs, cs.Name);
regions[string.Empty] = new HostedSolution(Configuraion, TenantDomainValidator, TimeZoneConverter, DbRegistry, cs, cs.Name);
}
regions[cs.Name] = new HostedSolution(cs, cs.Name);
regions[cs.Name] = new HostedSolution(Configuraion, TenantDomainValidator, TimeZoneConverter, DbRegistry, cs, cs.Name);
});
}
catch (DbException) { }

View File

@ -40,7 +40,7 @@ namespace ASC.Core.Common.Tests
[Test]
public void FindTenants()
{
var h = new HostedSolution(Configuration.GetConnectionStrings("core"));
var h = new HostedSolution(null, null, null, null, Configuration.GetConnectionStrings("core"));
var tenants = h.FindTenants("76ff727b-f987-4871-9834-e63d4420d6e9");
Assert.AreNotEqual(0, tenants.Count);
}
@ -55,7 +55,7 @@ namespace ASC.Core.Common.Tests
[Test]
public void RegionsTest()
{
var regionSerice = new MultiRegionHostedSolution("site", null, null, null);
var regionSerice = new MultiRegionHostedSolution("site", null, null, null, null, null);
var t1 = regionSerice.GetTenant("teamlab.com", 50001);
Assert.AreEqual("alias_test2.teamlab.com", t1.TenantDomain);