Răsfoiți Sursa

add extensions

Luke Pulverenti 9 ani în urmă
părinte
comite
0c8caf57f0
1 a modificat fișierele cu 62 adăugiri și 0 ștergeri
  1. 62 0
      MediaBrowser.Server.Mac/Native/SqliteExtensions.cs

+ 62 - 0
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
+{
+    /// <summary>
+    /// Class SQLiteExtensions
+    /// </summary>
+    static class SqliteExtensions
+    {
+        /// <summary>
+        /// Connects to db.
+        /// </summary>
+        /// <param name="dbPath">The db path.</param>
+        /// <param name="logger">The logger.</param>
+        /// <returns>Task{IDbConnection}.</returns>
+        /// <exception cref="System.ArgumentNullException">dbPath</exception>
+        public static async Task<IDbConnection> 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<IDbConnection> Connect(string dbPath)
+        {
+            return SqliteExtensions.ConnectToDb(dbPath, _logger);
+        }
+    }
+}