From 0c8caf57f0b4920ee18ccc25038b0c9c5a020faf Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Mon, 23 May 2016 14:14:30 -0400 Subject: [PATCH] add extensions --- .../Native/SqliteExtensions.cs | 62 +++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 MediaBrowser.Server.Mac/Native/SqliteExtensions.cs diff --git a/MediaBrowser.Server.Mac/Native/SqliteExtensions.cs b/MediaBrowser.Server.Mac/Native/SqliteExtensions.cs new file mode 100644 index 000000000..a05bb3f26 --- /dev/null +++ b/MediaBrowser.Server.Mac/Native/SqliteExtensions.cs @@ -0,0 +1,62 @@ +using System; +using System.Data; +using System.Data.SQLite; +using System.Threading.Tasks; +using MediaBrowser.Model.Logging; +using MediaBrowser.Server.Implementations.Persistence; + +namespace MediaBrowser.Server.Mac +{ + /// + /// Class SQLiteExtensions + /// + static class SqliteExtensions + { + /// + /// Connects to db. + /// + /// The db path. + /// The logger. + /// Task{IDbConnection}. + /// dbPath + public static async Task ConnectToDb(string dbPath, ILogger logger) + { + if (string.IsNullOrEmpty(dbPath)) + { + throw new ArgumentNullException("dbPath"); + } + + logger.Info("Sqlite {0} opening {1}", SQLiteConnection.SQLiteVersion, dbPath); + + var connectionstr = new SQLiteConnectionStringBuilder + { + PageSize = 4096, + CacheSize = 2000, + SyncMode = SynchronizationModes.Full, + DataSource = dbPath, + JournalMode = SQLiteJournalModeEnum.Wal + }; + + var connection = new SQLiteConnection(connectionstr.ConnectionString); + + await connection.OpenAsync().ConfigureAwait(false); + + return connection; + } + } + + public class DbConnector : IDbConnector + { + private readonly ILogger _logger; + + public DbConnector(ILogger logger) + { + _logger = logger; + } + + public Task Connect(string dbPath) + { + return SqliteExtensions.ConnectToDb(dbPath, _logger); + } + } +} \ No newline at end of file