public MsDbConfigDatabaseTargets(
     IConfiguration configuration,
     DefaultDbConfigValues dbConfigDatabaseTargets              = null,
     IPrioritizedConfigValues prioritizedConfigValues           = null,
     IEnumerable <IPrioritizedConfigKeys> prioritizedConfigKeys = null)
     : base(dbConfigDatabaseTargets ?? new MsDefaultDbConfigValues(configuration, prioritizedConfigValues, prioritizedConfigKeys))
 {
 }
Exemple #2
0
 /// <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)
 {
 }
Exemple #4
0
 /// <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);
 }
Exemple #5
0
        /// <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 ?? ":";
        }
Exemple #6
0
        /// <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());
            }
        }
Exemple #7
0
        /// <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());
            }
        }