From 53450bd514eec97d58eb18b8a01feab36475826b Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sat, 6 Jul 2013 17:23:32 -0400 Subject: added a notifications service --- MediaBrowser.ServerApplication/ApplicationHost.cs | 53 ++++++++++++++++++++++ .../MediaBrowser.ServerApplication.csproj | 7 +++ MediaBrowser.ServerApplication/packages.config | 1 + 3 files changed, 61 insertions(+) (limited to 'MediaBrowser.ServerApplication') diff --git a/MediaBrowser.ServerApplication/ApplicationHost.cs b/MediaBrowser.ServerApplication/ApplicationHost.cs index fd56a5aa6..274a491be 100644 --- a/MediaBrowser.ServerApplication/ApplicationHost.cs +++ b/MediaBrowser.ServerApplication/ApplicationHost.cs @@ -16,6 +16,7 @@ using MediaBrowser.Controller.IO; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Localization; using MediaBrowser.Controller.MediaInfo; +using MediaBrowser.Controller.Notifications; using MediaBrowser.Controller.Persistence; using MediaBrowser.Controller.Plugins; using MediaBrowser.Controller.Providers; @@ -44,6 +45,7 @@ using MediaBrowser.ServerApplication.Implementations; using MediaBrowser.WebDashboard.Api; using System; using System.Collections.Generic; +using System.Data.SQLite; using System.Diagnostics; using System.IO; using System.Linq; @@ -166,6 +168,7 @@ namespace MediaBrowser.ServerApplication private IUserRepository UserRepository { get; set; } internal IDisplayPreferencesRepository DisplayPreferencesRepository { get; set; } private IItemRepository ItemRepository { get; set; } + private INotificationsRepository NotificationsRepository { get; set; } /// /// The full path to our startmenu shortcut @@ -284,6 +287,8 @@ namespace MediaBrowser.ServerApplication var userdataTask = Task.Run(async () => await ConfigureUserDataRepositories().ConfigureAwait(false)); var userTask = Task.Run(async () => await ConfigureUserRepositories().ConfigureAwait(false)); + await ConfigureNotificationsRepository().ConfigureAwait(false); + await Task.WhenAll(itemsTask, userTask, displayPreferencesTask, userdataTask).ConfigureAwait(false); SetKernelProperties(); @@ -304,6 +309,25 @@ namespace MediaBrowser.ServerApplication ); } + /// + /// Configures the repositories. + /// + /// Task. + private async Task ConfigureNotificationsRepository() + { + var dbFile = Path.Combine(ApplicationPaths.DataPath, "notifications.db"); + + var connection = await ConnectToDb(dbFile).ConfigureAwait(false); + + var repo = new SqliteNotificationsRepository(connection, LogManager); + + repo.Initialize(); + + NotificationsRepository = repo; + + RegisterSingleInstance(NotificationsRepository); + } + /// /// Configures the repositories. /// @@ -342,6 +366,35 @@ namespace MediaBrowser.ServerApplication await UserRepository.Initialize().ConfigureAwait(false); ((UserManager)UserManager).UserRepository = UserRepository; + } + + /// + /// Connects to db. + /// + /// The db path. + /// Task{IDbConnection}. + /// dbPath + private static async Task ConnectToDb(string dbPath) + { + if (string.IsNullOrEmpty(dbPath)) + { + throw new ArgumentNullException("dbPath"); + } + + var connectionstr = new SQLiteConnectionStringBuilder + { + PageSize = 4096, + CacheSize = 4096, + SyncMode = SynchronizationModes.Off, + DataSource = dbPath, + JournalMode = SQLiteJournalModeEnum.Wal + }; + + var connection = new SQLiteConnection(connectionstr.ConnectionString); + + await connection.OpenAsync().ConfigureAwait(false); + + return connection; } /// diff --git a/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj b/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj index e9169c28e..21fa8a27e 100644 --- a/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj +++ b/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj @@ -172,6 +172,13 @@ + + False + ..\packages\System.Data.SQLite.x86.1.0.86.0\lib\net45\System.Data.SQLite.dll + + + ..\packages\System.Data.SQLite.x86.1.0.86.0\lib\net45\System.Data.SQLite.Linq.dll + diff --git a/MediaBrowser.ServerApplication/packages.config b/MediaBrowser.ServerApplication/packages.config index d994c6e0f..fa7f6219b 100644 --- a/MediaBrowser.ServerApplication/packages.config +++ b/MediaBrowser.ServerApplication/packages.config @@ -12,4 +12,5 @@ + \ No newline at end of file -- cgit v1.2.3