public static void RegisterDependencies(ContainerBuilder builder) { builder.Register(c => { var connectionString = ConfigurationManager.AppSettings["RAVENHQ_CONNECTION_STRING"]; var parts = connectionString.Split(';'); var documentStore = new DocumentStore() { Url = parts[0].Replace("Url=",string.Empty), ApiKey = parts.Length > 1 ? parts[1].Replace("ApiKey=",string.Empty) : null }; documentStore.Initialize(); // Create temporary initializer var initializer = new DatabaseInitializationService(documentStore, new DocumentSessionProvider(documentStore), new Optional<SiteSettingsDocument>(null)); initializer.DeleteIndices(); initializer.InstallIndices(); initializer.ResetIndices(); RavenProfiler.InitializeFor(documentStore); return documentStore; }).As<IDocumentStore>().SingleInstance(); builder.Register(c => new DocumentSessionProvider(c.Resolve<IDocumentStore>())).AsSelf(); builder.Register( c => new DatabaseInitializationService(c.Resolve<IDocumentStore>(),c.Resolve<DocumentSessionProvider>(), c.Resolve<Optional<SiteSettingsDocument>>())).AsSelf(); builder.Register(c => new Optional<SiteSettingsDocument>(c.Resolve<DocumentSessionProvider>().Session.Query<SiteSettingsDocument>().Customize(q => q.WaitForNonStaleResults()).FirstOrDefault())).As<Optional<SiteSettingsDocument>>().InstancePerHttpRequest(); }
public AdministrationController(DatabaseInitializationService initializationService) { this.initializationService = initializationService; }