public MsDbConfigDatabaseTargets( IConfiguration configuration, DefaultDbConfigValues dbConfigDatabaseTargets = null, IPrioritizedConfigValues prioritizedConfigValues = null, IEnumerable <IPrioritizedConfigKeys> prioritizedConfigKeys = null) : base(dbConfigDatabaseTargets ?? new MsDefaultDbConfigValues(configuration, prioritizedConfigValues, prioritizedConfigKeys)) { }
/// <summary> /// Create the DependencyInjection implementing class of <see cref="IDbConfig"/> (strong type Ms<see cref="DbConfig"/>) /// </summary> /// <param name="configuration"></param> /// <param name="defaultDbConfigValues"></param> /// <param name="dbConfigCredentials"></param> /// <param name="prioritizedConfigValues"></param> /// <param name="prioritizedConfigKeys"></param> /// <param name="configurationDelimiter"></param> /// <returns></returns> public static DbConfig CreateDbConfig(this IConfiguration configuration, DefaultDbConfigValues defaultDbConfigValues = null, DbConfigCredentials dbConfigCredentials = null, IPrioritizedConfigValues prioritizedConfigValues = null, IEnumerable <IPrioritizedConfigKeys> prioritizedConfigKeys = null, IConfigurationDelimiter configurationDelimiter = null) { return(new MsDbConfig(configuration, null, defaultDbConfigValues, dbConfigCredentials, prioritizedConfigValues, prioritizedConfigKeys, configurationDelimiter)); }
/// <inheritdoc /> public MsDbConnectionStringBuilderConfig( IConfiguration configuration, DefaultDbConfigValues defaultDbConfigValues = null, DbConfigCredentials dbConfigCredentials = null, IPrioritizedConfigValues prioritizedConfigValues = null, IEnumerable <IPrioritizedConfigKeys> prioritizedConfigKeys = null) : base(defaultDbConfigValues ?? new MsDefaultDbConfigValues(configuration, prioritizedConfigValues, prioritizedConfigKeys), dbConfigCredentials) { }
/// <summary> /// Overrides properties in <see cref="DbConfigCredentials"/> with default functions from <see cref="MsDefaultDbConfigValues"/> /// </summary> /// <param name="configuration"></param> /// <param name="defaultDbConfigValues"></param> /// <param name="configurationChangedHandler"></param> /// <param name="prioritizedConfigValues"></param> /// <param name="prioritizedConfigKeys"></param> public MsDbConfigCredentials( IConfiguration configuration, DefaultDbConfigValues defaultDbConfigValues = null, IConfigurationChangedHandler configurationChangedHandler = null, IPrioritizedConfigValues prioritizedConfigValues = null, IEnumerable <IPrioritizedConfigKeys> prioritizedConfigKeys = null) : base(defaultDbConfigValues ?? new MsDefaultDbConfigValues(configuration, prioritizedConfigValues, prioritizedConfigKeys)) { IgnoreManualCallOnConfigurationChanged = true; configurationChangedHandler?.RegisterConfigurationChangedCallback(OnConfigurationChanged); }
/// <inheritdoc /> public MsDbConfig( IConfiguration configuration, IConfigurationChangedHandler configurationChangedHandler = null, DefaultDbConfigValues defaultDbConfigValues = null, DbConfigCredentials dbConfigCredentials = null, IPrioritizedConfigValues prioritizedConfigValues = null, IEnumerable <IPrioritizedConfigKeys> prioritizedConfigKeys = null, IConfigurationDelimiter delimiter = null) : base(defaultDbConfigValues ?? new MsDefaultDbConfigValues(configuration, prioritizedConfigValues, prioritizedConfigKeys), dbConfigCredentials) { Configuration = configuration; configurationChangedHandler?.RegisterConfigurationChangedCallback(OnConfigurationChanged); ConfigurationDelimiter = delimiter?.Delimiter ?? ":"; }
/// <summary> /// Constructor. <br/> /// If <paramref name="dbConfig"/> is not Null, GetDbConfig func will be initialized from <paramref name="dbConfig"/><br/> /// If <paramref name="dbConfig"/> is Null, GetDbConfig func will be initialized from <paramref name="configuration"/><br/> /// </summary> /// <param name="configuration"></param> /// <param name="dbConfig"></param> /// <param name="configurationChangedHandler"></param> /// <param name="prioritizedConfigValues"></param> /// <param name="prioritizedConfigKeys"></param> public MsDbMigrationConfig( IConfiguration configuration, IDbConfig dbConfig = null, IConfigurationChangedHandler configurationChangedHandler = null, IPrioritizedConfigValues prioritizedConfigValues = null, IEnumerable <IPrioritizedConfigKeys> prioritizedConfigKeys = null) { var prioritizedConfigKeysArray = ToPrioritizedConfigKeysArray(); PrioritizedConfigValues = prioritizedConfigValues ?? new PrioritizedConfigValues(configuration.GetConfigValue, prioritizedConfigKeysArray); Configuration = configuration; if (dbConfig == null) { var newConfig = new MsDbConfig( Configuration, configurationChangedHandler, CreateDefaultDbConfigValues(prioritizedConfigKeysArray)); Defaults = newConfig.Defaults; dbConfig = newConfig; } if (Defaults == null) { Defaults = (dbConfig as MsDbConfig)?.Defaults ?? CreateDefaultDbConfigValues(prioritizedConfigKeysArray); } GetDbConfig = () => dbConfig; configurationChangedHandler?.RegisterConfigurationChangedCallback(OnConfigurationChanged); IPrioritizedConfigKeys[] ToPrioritizedConfigKeysArray() { var array = prioritizedConfigKeys as IPrioritizedConfigKeys[] ?? prioritizedConfigKeys?.ToArray() ?? GetDefaultPrioritizedConfigKeys(); return(array.Any() == false?GetDefaultPrioritizedConfigKeys() : array.Distinct().OrderBy(x => x.Order).ToArray()); } }
/// <summary> /// Overrides all default functions in <see cref="DefaultDbConfigValues"/> by <paramref name="configuration"/> extension methods /// </summary> /// <param name="configuration"></param> /// <param name="prioritizedConfigValues"></param> /// <param name="prioritizedConfigKeys"></param> public MsDefaultDbConfigValues( IConfiguration configuration, IPrioritizedConfigValues prioritizedConfigValues = null, IEnumerable <IPrioritizedConfigKeys> prioritizedConfigKeys = null) { Configuration = configuration; PrioritizedConfigKeys = ToPrioritizedConfigKeysArray(); prioritizedConfigValues = prioritizedConfigValues ?? new PrioritizedConfigValues(configuration.GetConfigValue, PrioritizedConfigKeys.Any() ? PrioritizedConfigKeys : new[] { new PrioritizedConfigKeys() }); // DbConfigDatabaseTargets defaults GetDefaultDbType = () => GetConfigValueSupportedDatabaseTypes(prioritizedConfigValues.GetDbType, configuration.GetDbType); GetDefaultSchema = () => GetConfigValueString(prioritizedConfigValues.GetDbSchema, configuration.GetDbSchema); GetDefaultDatabaseName = () => GetConfigValueString(prioritizedConfigValues.GetDbDatabaseName, configuration.GetDbDatabaseName); GetDefaultSchemaPrefixIdString = () => GetConfigValueString(prioritizedConfigValues.GetDbSchemaPrefixIdString, () => GetAllDatabaseConfigValues().GetValue("schemaPrefix:Id") ?? GetAllDatabaseConfigValues(sectionName: "database:migration").GetValue("schemaPrefix:Id")); GetDefaultSchemaPrefixUniqueIdString = () => GetConfigValueString(prioritizedConfigValues.GetDbSchemaUniquePrefixIdString, () => GetAllDatabaseConfigValues(sectionName: "database:migration").GetValue("schemaPrefix:UniqueId") ?? GetAllDatabaseConfigValues().GetValue("schemaPrefix:UniqueId")); // DbConfigCredentials defaults GetDefaultUser = () => GetConfigValueString(prioritizedConfigValues.GetDbUser, configuration.GetDbUser); GetDefaultPassword = () => GetConfigValueString(prioritizedConfigValues.GetDbPassword, configuration.GetDbPassword); GetDefaultAdminUser = () => GetConfigValueString(prioritizedConfigValues.GetDbAdminUser, configuration.GetDbAdminUser); GetDefaultAdminPassword = () => GetConfigValueString(prioritizedConfigValues.GetDbAdminPassword, configuration.GetDbAdminPassword); // DbConnectionStringBuilderConfig defaults GetDefaultHostName = () => GetConfigValueString(prioritizedConfigValues.GetDbHostname, configuration.GetDbHostname); GetDefaultPort = () => GetConfigValueString(prioritizedConfigValues.GetDbPort, configuration.GetDbPort); GetDefaultDataSource = () => GetConfigValueString(prioritizedConfigValues.GetDbDataSource, configuration.GetDbDataSource); GetDefaultConnectionTimeoutInSecs = () => GetConfigValueString(prioritizedConfigValues.GetDbConnectionTimeout, configuration.GetDbConnectionTimeout); GetDefaultPooling = () => GetConfigValueBool(prioritizedConfigValues.GetDbPooling, configuration.GetDbPooling); GetDefaultPoolingKeyValues = () => GetConfigValueDictionary(prioritizedConfigValues.GetDbPoolingKeyValues, configuration.GetDbPoolingKeyValues); // DbConfig defaults GetDefaultConnectionString = () => GetConfigValueString(prioritizedConfigValues.GetDbConnectionString, configuration.GetDbConnectionString); GetDefaultAdminConnectionString = () => GetConfigValueString(prioritizedConfigValues.GetDbAdminConnectionString, configuration.GetDbAdminConnectionString); string GetConfigValueString(Func <string> firstPriority, Func <string> nextPriority) { try { var value = firstPriority?.Invoke() ?? nextPriority?.Invoke(); return(string.IsNullOrEmpty(value) ? null : value); } catch { return(null); } } bool GetConfigValueBool(Func <bool?> firstPriority, Func <bool> nextPriority) { return(firstPriority?.Invoke() ?? nextPriority.Invoke()); } SupportedDatabaseTypes GetConfigValueSupportedDatabaseTypes(Func <SupportedDatabaseTypes?> firstPriority, Func <SupportedDatabaseTypes> nextPriority) { return(firstPriority?.Invoke() ?? nextPriority.Invoke()); } IDictionary <string, string> GetConfigValueDictionary(Func <IDictionary <string, string> > firstPriority, Func <IDictionary <string, string> > nextPriority) { return(firstPriority?.Invoke() ?? nextPriority.Invoke()); } IPrioritizedConfigKeys[] ToPrioritizedConfigKeysArray() { var array = prioritizedConfigKeys as IPrioritizedConfigKeys[] ?? prioritizedConfigKeys?.ToArray() ?? prioritizedConfigValues?.GetPrioritizedConfigKeys() ?? GetDefaultPrioritizedConfigKeys(); return(array.Any() == false?GetDefaultPrioritizedConfigKeys() : array.Distinct().OrderBy(x => x.Order).ToArray()); } }