/// <summary> /// Configures the user data repositories. /// </summary> /// <returns>Task.</returns> private async Task ConfigureUserDataRepositories() { var repo = new SqliteUserDataRepository(ApplicationPaths, LogManager); await repo.Initialize().ConfigureAwait(false); ((UserDataManager)UserDataManager).Repository = repo; }
/// <summary> /// Registers resources that classes will depend on /// </summary> /// <returns>Task.</returns> protected override async Task RegisterResources() { ServerKernel = new Kernel(); await base.RegisterResources().ConfigureAwait(false); RegisterSingleInstance <IHttpResultFactory>(new HttpResultFactory(LogManager)); RegisterSingleInstance <IServerApplicationHost>(this); RegisterSingleInstance <IServerApplicationPaths>(ApplicationPaths); RegisterSingleInstance(ServerKernel); RegisterSingleInstance(ServerConfigurationManager); RegisterSingleInstance <IWebSocketServer>(() => new AlchemyServer(Logger)); IsoManager = new IsoManager(); RegisterSingleInstance(IsoManager); RegisterSingleInstance <IBlurayExaminer>(() => new BdInfoExaminer()); ZipClient = new DotNetZipClient(); RegisterSingleInstance(ZipClient); UserDataRepository = new SqliteUserDataRepository(ApplicationPaths, JsonSerializer, LogManager); RegisterSingleInstance(UserDataRepository); UserRepository = await GetUserRepository().ConfigureAwait(false); RegisterSingleInstance(UserRepository); DisplayPreferencesRepository = new SqliteDisplayPreferencesRepository(ApplicationPaths, JsonSerializer, LogManager); RegisterSingleInstance(DisplayPreferencesRepository); ItemRepository = new SqliteItemRepository(ApplicationPaths, JsonSerializer, LogManager); RegisterSingleInstance(ItemRepository); UserManager = new UserManager(Logger, ServerConfigurationManager, UserRepository); RegisterSingleInstance(UserManager); LibraryManager = new LibraryManager(Logger, TaskManager, UserManager, ServerConfigurationManager, UserDataRepository, () => DirectoryWatchers); RegisterSingleInstance(LibraryManager); DirectoryWatchers = new DirectoryWatchers(LogManager, TaskManager, LibraryManager, ServerConfigurationManager); RegisterSingleInstance(DirectoryWatchers); ProviderManager = new ProviderManager(HttpClient, ServerConfigurationManager, DirectoryWatchers, LogManager, LibraryManager); RegisterSingleInstance(ProviderManager); RegisterSingleInstance <ILibrarySearchEngine>(() => new LuceneSearchEngine(ApplicationPaths, LogManager, LibraryManager)); MediaEncoder = new MediaEncoder(LogManager.GetLogger("MediaEncoder"), ZipClient, ApplicationPaths, JsonSerializer, HttpClient); RegisterSingleInstance(MediaEncoder); var clientConnectionManager = new SessionManager(UserDataRepository, ServerConfigurationManager, Logger, UserRepository); RegisterSingleInstance <ISessionManager>(clientConnectionManager); HttpServer = await _httpServerCreationTask.ConfigureAwait(false); RegisterSingleInstance(HttpServer, false); ServerManager = new ServerManager(this, JsonSerializer, Logger, ServerConfigurationManager); RegisterSingleInstance(ServerManager); LocalizationManager = new LocalizationManager(ServerConfigurationManager); RegisterSingleInstance(LocalizationManager); DtoService = new DtoService(Logger, LibraryManager, UserManager, UserDataRepository, ItemRepository); RegisterSingleInstance(DtoService); var displayPreferencesTask = Task.Run(async() => await ConfigureDisplayPreferencesRepositories().ConfigureAwait(false)); var itemsTask = Task.Run(async() => await ConfigureItemRepositories().ConfigureAwait(false)); var userdataTask = Task.Run(async() => await ConfigureUserDataRepositories().ConfigureAwait(false)); await ConfigureNotificationsRepository().ConfigureAwait(false); await Task.WhenAll(itemsTask, displayPreferencesTask, userdataTask).ConfigureAwait(false); SetKernelProperties(); }