private async Task <FeatureFlagsSessionManager> CreateSut()
        {
            var sqlSessionManagerSettings = new SQLServerSessionManagerSettings
            {
                ConnectionString = databaseFixture.ConnectionString
            };

            var featureFlagsSettings = new FeatureFlagsSettings(
                featureFlagAssemblies: new[] { typeof(FeatureFlagsSessionManagerTests).Assembly }
                )
            {
                ConnectionString = databaseFixture.ConnectionString,
                InitializationConnectionString = databaseFixture.ConnectionString,
                SqlSessionManagerSettings      = sqlSessionManagerSettings,
            };

            var sut = new FeatureFlagsSessionManager(
                featureFlagsSettings: featureFlagsSettings
                );

            await sqlSessionManagerSettings.CreateDatabaseTableAsync(
                featureFlagsSettings.InitializationConnectionString
                );

            return(sut);
        }
Esempio n. 2
0
        public void ConfigureServices(IServiceCollection services)
        {
            var featureFlagsConnectionString
                = configuration.GetConnectionString("featureFlags");
            var featureFlagsInitializationConnectionString
                = configuration.GetConnectionString("featureFlagsInitialization");

            var sqlSessionManagerSettings = new SQLServerSessionManagerSettings
            {
                FeatureSchemaName = "features",
            };

            services.AddRimDevFeatureFlags(
                configuration,
                new[] { typeof(Startup).Assembly },
                connectionString: featureFlagsConnectionString,
                initializationConnectionString: featureFlagsInitializationConnectionString,
                sqlSessionManagerSettings: sqlSessionManagerSettings
                );

            // IFeatureManagerSnapshot should always be scoped / per-request lifetime
            services.AddScoped <IFeatureManagerSnapshot>(serviceProvider =>
            {
                var featureFlagSessionManager = serviceProvider.GetRequiredService <FeatureFlagsSessionManager>();
                var featureFlagsSettings      = serviceProvider.GetRequiredService <FeatureFlagsSettings>();
                return(new LussatiteLazyCacheFeatureManager(
                           featureFlagsSettings.FeatureFlagTypes.Select(x => x.Name).ToList(),
                           new []
                {
                    // in other use cases, you might list multiple ISessionManager objects to have layers
                    featureFlagSessionManager
                }));
            });

            services.AddRimDevFeatureFlagsUI();
        }