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.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using ASC.Common.Data.Sql; using ASC.Common.Data.Sql;
using ASC.Common.Utils;
using Microsoft.Extensions.Configuration;
namespace ASC.Common.Data namespace ASC.Common.Data
{ {
public class MultiRegionalDbManager : IDbManager 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; const StringComparison cmp = StringComparison.InvariantCultureIgnoreCase;
DatabaseId = dbId; DatabaseId = dbId;
databases = Utils.ConfigurationManager.ConnectionStrings databases = configuration.GetConnectionStrings()
.Where(c => c.Name.Equals(dbId, cmp) || c.Name.StartsWith(dbId + ".", cmp)) .Where(c => c.Name.Equals(dbId, cmp) || c.Name.StartsWith(dbId + ".", cmp))
.Select( .Select(
c => 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) public IDbTransaction BeginTransaction(IsolationLevel isolationLevel)

View File

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

View File

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

View File

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

View File

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

View File

@ -40,7 +40,7 @@ namespace ASC.Core.Common.Tests
[Test] [Test]
public void FindTenants() 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"); var tenants = h.FindTenants("76ff727b-f987-4871-9834-e63d4420d6e9");
Assert.AreNotEqual(0, tenants.Count); Assert.AreNotEqual(0, tenants.Count);
} }
@ -55,7 +55,7 @@ namespace ASC.Core.Common.Tests
[Test] [Test]
public void RegionsTest() 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); var t1 = regionSerice.GetTenant("teamlab.com", 50001);
Assert.AreEqual("alias_test2.teamlab.com", t1.TenantDomain); Assert.AreEqual("alias_test2.teamlab.com", t1.TenantDomain);