public void PrefixShoulWork()
        {
            string prefix = DateTime.Now.ToString();

            var options = new DatabaseConfigurationOptions
            {
                ConnectionResolver = GetOpenedConnection,
                KeyColumn          = "key",
                ValueColumn        = "value",
                Table  = $"config_{DateTime.Now.ToString("yyyyMMddHHmmss")}",
                Prefix = prefix
            };

            string key   = Guid.NewGuid().ToString();
            string value = Guid.NewGuid().ToString();

            InitConfigurationTable(options, key, value);

            IConfigurationBuilder configurationBuilder = new ConfigurationBuilder()
                                                         .AddEnvironmentVariables()
                                                         .AddJsonFile("notExist.json", true)
                                                         .AddDatabase(options);

            IConfigurationRoot configuration = configurationBuilder.Build();

            string configurationValue = configuration[$"{prefix}:{key}"];

            Assert.AreEqual(configurationValue, value);
        }
Пример #2
0
        public static DatabaseConfigurationOptions ReadDatabaseOptionsFromAppSettings(this IConfiguration configuration)
        {
            DatabaseConfigurationOptions databaseOptions = new DatabaseConfigurationOptions();

            configuration.GetSection("DatabaseConfigurationOptions").Bind(databaseOptions);
            return(databaseOptions);
        }
 public SqlServerInstanceProvider(ILogger <SqlServerInstanceProvider> logger, DatabaseConfigurationOptions highAvailabilityOptions, IAmsLicenseManager licenseManager, IWindowsServiceProvider windowsServiceProvider)
 {
     this.logger = logger;
     this.highAvailabilityOptions = highAvailabilityOptions;
     this.licenseManager          = licenseManager;
     this.windowsServiceProvider  = windowsServiceProvider;
 }
Пример #4
0
        public HighAvailabilityViewModel(IDialogCoordinator dialogCoordinator, IShellExecuteProvider shellExecuteProvider, IAmsLicenseManager licenseManager, ILogger <HighAvailabilityViewModel> logger, INotifyModelChangedEventPublisher eventPublisher, DatabaseConfigurationOptions highAvailabilityOptions, DataProtectionOptions dataProtectionOptions, ICertificateSynchronizationProvider certSyncProvider, ISecretRekeyProvider rekeyProvider, SqlServerInstanceProvider sqlInstanceProvider, IScriptTemplateProvider scriptTemplateProvider, IWindowsServiceProvider windowsServiceProvider)
        {
            this.shellExecuteProvider = shellExecuteProvider;
            this.licenseManager       = licenseManager;
            this.logger                 = logger;
            this.dbOptions              = highAvailabilityOptions;
            this.dataProtectionOptions  = dataProtectionOptions;
            this.certSyncProvider       = certSyncProvider;
            this.dialogCoordinator      = dialogCoordinator;
            this.rekeyProvider          = rekeyProvider;
            this.sqlInstanceProvider    = sqlInstanceProvider;
            this.scriptTemplateProvider = scriptTemplateProvider;
            this.windowsServiceProvider = windowsServiceProvider;

            this.licenseManager.OnLicenseDataChanged += delegate
            {
                this.NotifyOfPropertyChange(nameof(this.IsEnterpriseEdition));
                this.NotifyOfPropertyChange(nameof(this.ShowEnterpriseEditionBanner));
            };

            this.DisplayName = "High availability";
            eventPublisher.Register(this);

            this.isClusterCompatibleSecretEncryptionEnabled = this.dataProtectionOptions.EnableClusterCompatibleSecretEncryption;
        }
        public IServiceCollection Register(IServiceCollection services, IConfiguration configuration)
        {
            DatabaseConfigurationOptions databaseOptions = configuration.ReadDatabaseOptionsFromAppSettings();

            switch (databaseOptions.DatabaseAccessObjectStrategy)
            {
            case DatabaseAccessObjectStrategy.EntityFramework:

                switch (databaseOptions.DatabaseStrategy)
                {
                case DatabaseStrategy.InMemoryDB:
                case DatabaseStrategy.SqlServer:
                case DatabaseStrategy.SQLite:
                    new EntityFrameworkStrategy().Register(services, configuration, databaseOptions);
                    break;

                default:
                    throw new ArgumentException("Não foi possível recuperar a estratégia de qual banco de dados utilizar!");
                }

                break;

            case DatabaseAccessObjectStrategy.Dapper:

                switch (databaseOptions.DatabaseStrategy)
                {
                case DatabaseStrategy.SqlServer:
                case DatabaseStrategy.SQLite:
                    //new DapperStrategy().Register(services, configuration, databaseOptions);
                    break;

                default:
                    throw new ArgumentException("Não foi possível recuperar a estratégia de qual banco de dados utilizar!");
                }

                break;

            case DatabaseAccessObjectStrategy.MongoDriver:

                switch (databaseOptions.DatabaseStrategy)
                {
                case DatabaseStrategy.MongoDB:
                    //new MongoDriverStrategy().Register(services, configuration, databaseOptions);
                    break;

                default:
                    throw new ArgumentException("Não foi possível recuperar a estratégia de qual banco de dados utilizar!");
                }

                break;

            default:
                throw new ArgumentException("Não foi possível recuperar a estratégia de qual banco de dados utilizar!");
            }

            return(services);
        }
Пример #6
0
 public SqlDbProvider(IAmsLicenseManager licenseManager, IOptions <DatabaseConfigurationOptions> highAvailabilityOptions, ILogger <SqlDbProvider> logger, IUpgradeLog upgradeLogger, SqlLocalDbInstanceProvider localDbInstanceProvider, SqlServerInstanceProvider sqlServerInstanceProvider)
 {
     this.licenseManager          = licenseManager;
     this.highAvailabilityOptions = highAvailabilityOptions.Value;
     this.logger                    = logger;
     this.upgradeLogger             = upgradeLogger;
     this.localDbInstanceProvider   = localDbInstanceProvider;
     this.sqlServerInstanceProvider = sqlServerInstanceProvider;
     this.InitializeDb();
 }
        // [Fact] public void Test() { }
        // [Theory] public void Test(int param) { }
        public StoreManagerTests()
        {
            // Get the connection string
            string filepath   = @"C:/Users/Khypr/Desktop/store_manager_configuration.json";
            string json       = File.ReadAllText(filepath);
            string connString = JsonSerializer.Deserialize <string>(json);

            // Set up storage
            IStorageRepository storage = new DatabaseStorageRepository();
            // Set up the configuration options
            IConfigurationOptions configurationOptions = new DatabaseConfigurationOptions(new FileLogger("C:/Users/Khypr/Desktop/StoreManager/store_manager.tests.log"), connString);

            // Initialize the App
            StoreManagerApplication.Initialize(storage, null, configurationOptions);
        }
        private void InitConfigurationTable(DatabaseConfigurationOptions options, string key, string value)
        {
            using (SqliteConnection conn = GetOpenedConnection())
            {
                string sql = string.Format($@"
create table if not exists [{options.Table}]
(
    [{options.KeyColumn}] nvarchar(100) not null primary key, 
    [{options.ValueColumn}] nvarchar(100)
);

delete from [{options.Table}];

insert into [{options.Table}]({options.KeyColumn}, {options.ValueColumn}) values ('{key}', '{value}');
");

                using (IDbCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = sql;
                    cmd.ExecuteNonQuery();
                }
            }
        }
        public void LoadDataShouldWork()
        {
            var options = new DatabaseConfigurationOptions
            {
                ConnectionResolver = GetOpenedConnection,
                KeyColumn          = "key",
                ValueColumn        = "value",
                Table = $"config_{DateTime.Now.ToString("yyyyMMddHHmmss")}"
            };

            string key   = Guid.NewGuid().ToString();
            string value = Guid.NewGuid().ToString();

            InitConfigurationTable(options, key, value);

            var provider = new DatabaseConfigurationProvider(options);

            provider.Load();

            string configurationValue;

            Assert.IsTrue(provider.TryGet(key, out configurationValue));
            Assert.AreEqual(configurationValue, value);
        }
Пример #10
0
        static void Main(string[] _)
        {
            ApplicationInterfaceBase applicationInterface;

            string                filepath             = @"C:/Users/Khypr/Desktop/store_manager_configuration.json";
            string                json                 = File.ReadAllText(filepath);
            string                connString           = JsonSerializer.Deserialize <string>(json);
            ISerializer           serializer           = null;
            IConfigurationOptions configurationOptions = new DatabaseConfigurationOptions(new FileLogger("C:/Users/Khypr/Desktop/store_manager.log"), connString);


            bool verbose = false; // CUI.PromptForBool("Do you wish to run the application verbosely?", "yes", "no");

            if (verbose)
            {
                applicationInterface = new VerboseApplicationInterface(null, serializer, configurationOptions);
            }
            else
            {
                applicationInterface = new BaselineApplicationInterface(null, serializer, configurationOptions);
            }

            applicationInterface.Run();
        }
Пример #11
0
 /// <summary>
 /// Add database source
 /// </summary>
 /// <param name="builder"></param>
 /// <param name="options"></param>
 public static IConfigurationBuilder AddDatabase(this IConfigurationBuilder builder, DatabaseConfigurationOptions options)
 {
     return(builder.Add(new DatabaseConfigurationSource(options)));
 }
Пример #12
0
        private void _BuildDatabase(string league, DatabaseConfigurationOptions options)
        {
            int  shortDelay = 2000;            //ms
            bool success    = true;

            // Create League Information
            if (options == DatabaseConfigurationOptions.COMPLETE || (options & DatabaseConfigurationOptions.LEAGUE) == DatabaseConfigurationOptions.LEAGUE)
            {
                if (league == "")
                {
                    league = Constants.BLASEBALL_LEAGUE_ID;
                }
                string leagueInformation = Download($"{Constants.URL_BLASEBALL}database/league?id={league}");
                if (leagueInformation == "")
                {
                    OnDatabaseFailed?.Invoke();
                    return;
                }
                Logger.Log("League Information Downloaded");
                Database.SetLeague(JsonUtility.FromJson <BBLeague>(leagueInformation));
                Logger.Log("League Information Entered");
                Thread.Sleep(shortDelay);
            }
            // Create Subleague Information
            if (options == DatabaseConfigurationOptions.COMPLETE || (options & DatabaseConfigurationOptions.SUBLEAGUES) == DatabaseConfigurationOptions.SUBLEAGUES)
            {
                foreach (string subleague in Database.GetLeague().subleagues)
                {
                    success = UpdateSubleague(subleague);
                    if (!success)
                    {
                        OnDatabaseFailed?.Invoke();
                        return;
                    }
                    Thread.Sleep(shortDelay);
                }
            }

            // Division Information
            if (options == DatabaseConfigurationOptions.COMPLETE || (options & DatabaseConfigurationOptions.DIVISIONS) == DatabaseConfigurationOptions.DIVISIONS)
            {
                foreach (string subleagueID in Database.GetSubleagueIDs())
                {
                    BBSubleague subleague = Database.GetSubleague(subleagueID);
                    foreach (string division in subleague.divisions)
                    {
                        success = UpdateDivision(division);
                        if (!success)
                        {
                            OnDatabaseFailed?.Invoke();
                            return;
                        }
                        Thread.Sleep(shortDelay);
                    }
                }
            }


            // Teams Information
            if (options == DatabaseConfigurationOptions.COMPLETE || (options & DatabaseConfigurationOptions.TEAMS) == DatabaseConfigurationOptions.TEAMS)
            {
                foreach (string divisionID in Database.GetDivisionIDs())
                {
                    BBDivision division = Database.GetDivision(divisionID);
                    foreach (string teamID in division.teams)
                    {
                        success = UpdateTeam(teamID);
                        if (!success)
                        {
                            OnDatabaseFailed?.Invoke();
                            return;
                        }
                        Thread.Sleep(shortDelay);
                    }
                }
            }

            // Players Information
            if (options == DatabaseConfigurationOptions.COMPLETE || (options & DatabaseConfigurationOptions.PLAYERS) == DatabaseConfigurationOptions.PLAYERS)
            {
                List <string> players = new List <string>();
                foreach (string teamID in Database.GetTeamIDs())
                {
                    BBTeam team = Database.GetTeam(teamID);

                    foreach (string playerID in team.lineup)
                    {
                        players.Add(playerID);
                    }
                    foreach (string playerID in team.rotation)
                    {
                        players.Add(playerID);
                    }
                }

                List <string> shortList = new List <string>();
                while (players.Count > 0)
                {
                    shortList.Add(players[0]);
                    players.RemoveAt(0);

                    if (shortList.Count >= 32 || players.Count == 0)
                    {
                        success = UpdatePlayers(shortList.ToArray(), Database);
                        if (!success)
                        {
                            OnDatabaseFailed?.Invoke();
                            return;
                        }
                        Thread.Sleep(shortDelay);
                        shortList = new List <string>();
                    }
                }
            }

            if (options == DatabaseConfigurationOptions.COMPLETE)
            {
                Database.lastUpdated = Helper.GetUnixTime();
            }

            Logger.Log("Live Database Downloaded. Saving Local Datablase");
            Database.Save();
            FileLoader.SetupStreamingAssets();
            OnDatabaseCreated?.Invoke();
        }
Пример #13
0
        public void BuildDatabase(string league, DatabaseConfigurationOptions options)
        {
            Thread DatabaseBuilder = new Thread(() => _BuildDatabase(league, options));

            DatabaseBuilder.Start();
        }
Пример #14
0
 public IServiceCollection Register(IServiceCollection services, IConfiguration configuration, DatabaseConfigurationOptions databaseOptions)
 {
     return(services.AddDbContextPool <ApplicationContext>(options =>
     {
         if (databaseOptions.DatabaseStrategy == DatabaseStrategy.InMemoryDB)
         {
             options.UseInMemoryDatabase(databaseOptions.DatabaseName);
         }
         else
         {
             options.UseSqlServer(configuration.GetConnectionString(databaseOptions.SqlServerConnectionStringName),
                                  sqlConfig => sqlConfig.MaxBatchSize(5));
         }
     }));
 }