private async Task  ConfigureRavenDb(IServiceCollection services)
        {
            IDocumentStore      store        = null;
            RavenDbIndexManager indexManager = new StandardRavenDbIndexManager();

            if (_env.IsDevelopment())
            {
                _logger.Information("Setup RavenDb for Development");
                var databaseCreator = new DevelopmentRavenDbSetup(indexManager, _logger);
                store = await databaseCreator.Create(Configuration.GetValue <string>("RavenDbUrl"));
            }

            if (_env.IsStaging())
            {
                _logger.Information("Setup RavenDb for Staging");
                var databaseCreator = new ProductionRavenDbSetup(indexManager, _logger);
                store = await databaseCreator.Create(Configuration["RavenDbUrl"],
                                                     Configuration["RavenDbStagingApiCert"]);
            }

            if (_env.IsProduction())
            {
                _logger.Information("Setup RavenDb for Production");
                indexManager = new EmptyRavenDbIndexManager();
                var databaseCreator = new ProductionRavenDbSetup(indexManager, _logger);
                store = await databaseCreator.Create(Configuration["RavenDbUrl"],
                                                     Configuration["RavenDbProductionApiCert"]);
            }

            if (store == null)
            {
                _logger.Information("RavenDb is not setup");
                return;
            }

            Log.Information("Add RavenDocumentStore as Singleton");
            services.AddSingleton(store);
            services.AddScoped(sp => store.OpenAsyncSession());
        }
        private static void AddAllIndexes(IDocumentStore store)
        {
            var indexManager = new StandardRavenDbIndexManager();

            Task.WaitAll(indexManager.AddAllIndexes(store));
        }