diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-09-29 18:00:08 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-09-29 18:00:08 -0400 |
| commit | cdfb009df876e4f5bcc99b5017ef7f4154131a4c (patch) | |
| tree | bc3dfccf915619118aa1da5f911f3d79de419ad8 | |
| parent | 373bdf48253c6a31393ab9116db36a39e5e443a1 (diff) | |
limit knowledge of sqlite
3 files changed, 47 insertions, 96 deletions
diff --git a/MediaBrowser.Server.Implementations/Persistence/SqliteDisplayPreferencesRepository.cs b/MediaBrowser.Server.Implementations/Persistence/SqliteDisplayPreferencesRepository.cs index 8cd618d21..909745fe3 100644 --- a/MediaBrowser.Server.Implementations/Persistence/SqliteDisplayPreferencesRepository.cs +++ b/MediaBrowser.Server.Implementations/Persistence/SqliteDisplayPreferencesRepository.cs @@ -5,7 +5,6 @@ using MediaBrowser.Model.Logging; using MediaBrowser.Model.Serialization; using System; using System.Data; -using System.Data.SQLite; using System.IO; using System.Threading; using System.Threading.Tasks; @@ -17,7 +16,7 @@ namespace MediaBrowser.Server.Implementations.Persistence /// </summary> public class SqliteDisplayPreferencesRepository : IDisplayPreferencesRepository { - private SQLiteConnection _connection; + private IDbConnection _connection; private readonly ILogger _logger; @@ -124,7 +123,7 @@ namespace MediaBrowser.Server.Implementations.Persistence await _writeLock.WaitAsync(cancellationToken).ConfigureAwait(false); - SQLiteTransaction transaction = null; + IDbTransaction transaction = null; try { @@ -133,14 +132,15 @@ namespace MediaBrowser.Server.Implementations.Persistence using (var cmd = _connection.CreateCommand()) { cmd.CommandText = "replace into userdisplaypreferences (id, userid, client, data) values (@1, @2, @3, @4)"; - cmd.AddParam("@1", displayPreferences.Id); - cmd.AddParam("@2", userId); - cmd.AddParam("@3", client); - cmd.AddParam("@4", serialized); + + cmd.Parameters.Add(cmd, "@1", DbType.Guid).Value = displayPreferences.Id; + cmd.Parameters.Add(cmd, "@2", DbType.Guid).Value = userId; + cmd.Parameters.Add(cmd, "@3", DbType.String).Value = client; + cmd.Parameters.Add(cmd, "@4", DbType.Binary).Value = serialized; cmd.Transaction = transaction; - await cmd.ExecuteNonQueryAsync(cancellationToken); + cmd.ExecuteNonQuery(); } transaction.Commit(); @@ -194,14 +194,9 @@ namespace MediaBrowser.Server.Implementations.Persistence var cmd = _connection.CreateCommand(); cmd.CommandText = "select data from userdisplaypreferences where id = @id and userId=@userId and client=@client"; - var idParam = cmd.Parameters.Add("@id", DbType.Guid); - idParam.Value = displayPreferencesId; - - var userIdParam = cmd.Parameters.Add("@userId", DbType.Guid); - userIdParam.Value = userId; - - var clientParam = cmd.Parameters.Add("@client", DbType.String); - clientParam.Value = client; + cmd.Parameters.Add(cmd, "@id", DbType.Guid).Value = displayPreferencesId; + cmd.Parameters.Add(cmd, "@userId", DbType.Guid).Value = userId; + cmd.Parameters.Add(cmd, "@client", DbType.String).Value = client; using (var reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess | CommandBehavior.SingleResult | CommandBehavior.SingleRow)) { diff --git a/MediaBrowser.Server.Implementations/Persistence/SqliteExtensions.cs b/MediaBrowser.Server.Implementations/Persistence/SqliteExtensions.cs index fa5e016c1..41e419e1a 100644 --- a/MediaBrowser.Server.Implementations/Persistence/SqliteExtensions.cs +++ b/MediaBrowser.Server.Implementations/Persistence/SqliteExtensions.cs @@ -13,40 +13,6 @@ namespace MediaBrowser.Server.Implementations.Persistence static class SqliteExtensions { /// <summary> - /// Adds the param. - /// </summary> - /// <param name="cmd">The CMD.</param> - /// <param name="param">The param.</param> - /// <returns>SQLiteParameter.</returns> - /// <exception cref="System.ArgumentNullException"></exception> - public static SQLiteParameter AddParam(this SQLiteCommand cmd, string param) - { - if (string.IsNullOrEmpty(param)) - { - throw new ArgumentNullException(); - } - - var sqliteParam = new SQLiteParameter(param); - cmd.Parameters.Add(sqliteParam); - return sqliteParam; - } - - /// <summary> - /// Adds the param. - /// </summary> - /// <param name="cmd">The CMD.</param> - /// <param name="param">The param.</param> - /// <param name="data">The data.</param> - /// <returns>SQLiteParameter.</returns> - /// <exception cref="System.ArgumentNullException"></exception> - public static SQLiteParameter AddParam(this SQLiteCommand cmd, string param, object data) - { - var sqliteParam = AddParam(cmd, param); - sqliteParam.Value = data; - return sqliteParam; - } - - /// <summary> /// Determines whether the specified conn is open. /// </summary> /// <param name="conn">The conn.</param> @@ -160,7 +126,7 @@ namespace MediaBrowser.Server.Implementations.Persistence /// <param name="dbPath">The db path.</param> /// <returns>Task{IDbConnection}.</returns> /// <exception cref="System.ArgumentNullException">dbPath</exception> - public static async Task<SQLiteConnection> ConnectToDb(string dbPath) + public static async Task<IDbConnection> ConnectToDb(string dbPath) { if (string.IsNullOrEmpty(dbPath)) { diff --git a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs index 9c5cf6f1c..5ce44efd5 100644 --- a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs +++ b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs @@ -7,7 +7,6 @@ using MediaBrowser.Model.Serialization; using System; using System.Collections.Generic; using System.Data; -using System.Data.SQLite; using System.IO; using System.Linq; using System.Threading; @@ -20,12 +19,12 @@ namespace MediaBrowser.Server.Implementations.Persistence /// </summary> public class SqliteItemRepository : IItemRepository { - private SQLiteConnection _connection; + private IDbConnection _connection; private readonly ILogger _logger; private readonly TypeMapper _typeMapper = new TypeMapper(); - + /// <summary> /// Gets the name of the repository /// </summary> @@ -52,15 +51,15 @@ namespace MediaBrowser.Server.Implementations.Persistence /// <summary> /// The _save item command /// </summary> - private SQLiteCommand _saveItemCommand; + private IDbCommand _saveItemCommand; private readonly string _criticReviewsPath; private SqliteChapterRepository _chapterRepository; - private SQLiteCommand _deleteChildrenCommand; - private SQLiteCommand _saveChildrenCommand; - + private IDbCommand _deleteChildrenCommand; + private IDbCommand _saveChildrenCommand; + /// <summary> /// Initializes a new instance of the <see cref="SqliteItemRepository"/> class. /// </summary> @@ -104,7 +103,7 @@ namespace MediaBrowser.Server.Implementations.Persistence public async Task Initialize() { var dbFile = Path.Combine(_appPaths.DataPath, "library.db"); - + _connection = await SqliteExtensions.ConnectToDb(dbFile).ConfigureAwait(false); string[] queries = { @@ -136,29 +135,20 @@ namespace MediaBrowser.Server.Implementations.Persistence /// </summary> private void PrepareStatements() { - _saveItemCommand = new SQLiteCommand - { - CommandText = "replace into TypedBaseItems (guid, type, data) values (@1, @2, @3)" - }; - - _saveItemCommand.Parameters.Add(new SQLiteParameter("@1")); - _saveItemCommand.Parameters.Add(new SQLiteParameter("@2")); - _saveItemCommand.Parameters.Add(new SQLiteParameter("@3")); - - _deleteChildrenCommand = new SQLiteCommand - { - CommandText = "delete from ChildrenIds where ParentId=@ParentId" - }; - - _deleteChildrenCommand.Parameters.Add(new SQLiteParameter("@ParentId")); - - _saveChildrenCommand = new SQLiteCommand - { - CommandText = "replace into ChildrenIds (ParentId, ItemId) values (@ParentId, @ItemId)" - }; - - _saveChildrenCommand.Parameters.Add(new SQLiteParameter("@ParentId")); - _saveChildrenCommand.Parameters.Add(new SQLiteParameter("@ItemId")); + _saveItemCommand = _connection.CreateCommand(); + _saveItemCommand.CommandText = "replace into TypedBaseItems (guid, type, data) values (@1, @2, @3)"; + _saveItemCommand.Parameters.Add(_saveItemCommand, "@1"); + _saveItemCommand.Parameters.Add(_saveItemCommand, "@2"); + _saveItemCommand.Parameters.Add(_saveItemCommand, "@3"); + + _deleteChildrenCommand = _connection.CreateCommand(); + _deleteChildrenCommand.CommandText = "delete from ChildrenIds where ParentId=@ParentId"; + _deleteChildrenCommand.Parameters.Add(_deleteChildrenCommand, "@ParentId"); + + _saveChildrenCommand = _connection.CreateCommand(); + _saveChildrenCommand.CommandText = "replace into ChildrenIds (ParentId, ItemId) values (@ParentId, @ItemId)"; + _saveChildrenCommand.Parameters.Add(_saveChildrenCommand, "@ParentId"); + _saveChildrenCommand.Parameters.Add(_saveChildrenCommand, "@ItemId"); } /// <summary> @@ -205,7 +195,7 @@ namespace MediaBrowser.Server.Implementations.Persistence await _writeLock.WaitAsync(cancellationToken).ConfigureAwait(false); - SQLiteTransaction transaction = null; + IDbTransaction transaction = null; try { @@ -215,13 +205,13 @@ namespace MediaBrowser.Server.Implementations.Persistence { cancellationToken.ThrowIfCancellationRequested(); - _saveItemCommand.Parameters[0].Value = item.Id; - _saveItemCommand.Parameters[1].Value = item.GetType().FullName; - _saveItemCommand.Parameters[2].Value = _jsonSerializer.SerializeToBytes(item); + _saveItemCommand.GetParameter(0).Value = item.Id; + _saveItemCommand.GetParameter(1).Value = item.GetType().FullName; + _saveItemCommand.GetParameter(2).Value = _jsonSerializer.SerializeToBytes(item); _saveItemCommand.Transaction = transaction; - await _saveItemCommand.ExecuteNonQueryAsync(cancellationToken); + _saveItemCommand.ExecuteNonQuery(); } transaction.Commit(); @@ -274,8 +264,7 @@ namespace MediaBrowser.Server.Implementations.Persistence using (var cmd = _connection.CreateCommand()) { cmd.CommandText = "select type,data from TypedBaseItems where guid = @guid"; - var guidParam = cmd.Parameters.Add("@guid", DbType.Guid); - guidParam.Value = id; + cmd.Parameters.Add(cmd, "@guid", DbType.Guid).Value = id; using (var reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess | CommandBehavior.SingleResult | CommandBehavior.SingleRow)) { @@ -446,7 +435,7 @@ namespace MediaBrowser.Server.Implementations.Persistence { cmd.CommandText = "select ItemId from ChildrenIds where ParentId = @ParentId"; - cmd.Parameters.Add("@ParentId", DbType.Guid).Value = parentId; + cmd.Parameters.Add(cmd, "@ParentId", DbType.Guid).Value = parentId; using (var reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess | CommandBehavior.SingleResult)) { @@ -479,27 +468,28 @@ namespace MediaBrowser.Server.Implementations.Persistence await _writeLock.WaitAsync(cancellationToken).ConfigureAwait(false); - SQLiteTransaction transaction = null; + IDbTransaction transaction = null; try { transaction = _connection.BeginTransaction(); // First delete - _deleteChildrenCommand.Parameters[0].Value = parentId; + _deleteChildrenCommand.GetParameter(0).Value = parentId; _deleteChildrenCommand.Transaction = transaction; - await _deleteChildrenCommand.ExecuteNonQueryAsync(cancellationToken); + + _deleteChildrenCommand.ExecuteNonQuery(); foreach (var id in children) { cancellationToken.ThrowIfCancellationRequested(); - _saveChildrenCommand.Parameters[0].Value = parentId; - _saveChildrenCommand.Parameters[1].Value = id; + _saveChildrenCommand.GetParameter(0).Value = parentId; + _saveChildrenCommand.GetParameter(1).Value = id; _saveChildrenCommand.Transaction = transaction; - await _saveChildrenCommand.ExecuteNonQueryAsync(cancellationToken); + _saveChildrenCommand.ExecuteNonQuery(); } transaction.Commit(); |
