diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2016-05-02 01:53:09 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2016-05-02 01:53:09 -0400 |
| commit | ffff503e9b5c8dd05520f24197cd6a2018e2a7b0 (patch) | |
| tree | 9e0a32286a6a5ff014f1fa777bb17cebc4097abe /MediaBrowser.ServerApplication/Native/SqliteExtensions.cs | |
| parent | e8965dbfbabd89cc8a1477e7460acf28fe262b3d (diff) | |
| parent | 2969be59cfa07c1272dd4ddecb710bc08155383a (diff) | |
Merge branch 'dev' into beta
Diffstat (limited to 'MediaBrowser.ServerApplication/Native/SqliteExtensions.cs')
| -rw-r--r-- | MediaBrowser.ServerApplication/Native/SqliteExtensions.cs | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/MediaBrowser.ServerApplication/Native/SqliteExtensions.cs b/MediaBrowser.ServerApplication/Native/SqliteExtensions.cs new file mode 100644 index 000000000..1cde2ea13 --- /dev/null +++ b/MediaBrowser.ServerApplication/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.ServerApplication.Native +{ + /// <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); + } + } +}
\ No newline at end of file |
