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
///
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
@@ -12,40 +12,6 @@ namespace MediaBrowser.Server.Implementations.Persistence
///
static class SqliteExtensions
{
- ///
- /// Adds the param.
- ///
- /// The CMD.
- /// The param.
- /// SQLiteParameter.
- ///
- 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;
- }
-
- ///
- /// Adds the param.
- ///
- /// The CMD.
- /// The param.
- /// The data.
- /// SQLiteParameter.
- ///
- public static SQLiteParameter AddParam(this SQLiteCommand cmd, string param, object data)
- {
- var sqliteParam = AddParam(cmd, param);
- sqliteParam.Value = data;
- return sqliteParam;
- }
-
///
/// Determines whether the specified conn is open.
///
@@ -160,7 +126,7 @@ namespace MediaBrowser.Server.Implementations.Persistence
/// The db path.
/// Task{IDbConnection}.
/// dbPath
- public static async Task ConnectToDb(string dbPath)
+ public static async Task 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
///
public class SqliteItemRepository : IItemRepository
{
- private SQLiteConnection _connection;
+ private IDbConnection _connection;
private readonly ILogger _logger;
private readonly TypeMapper _typeMapper = new TypeMapper();
-
+
///
/// Gets the name of the repository
///
@@ -52,15 +51,15 @@ namespace MediaBrowser.Server.Implementations.Persistence
///
/// The _save item command
///
- 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;
+
///
/// Initializes a new instance of the class.
///
@@ -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
///
private void PrepareStatements()
{
- _saveItemCommand = new SQLiteCommand
- {
- CommandText = "replace into TypedBaseItems (guid, type, data) values (@1, @2, @3)"
- };
+ _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");
- _saveItemCommand.Parameters.Add(new SQLiteParameter("@1"));
- _saveItemCommand.Parameters.Add(new SQLiteParameter("@2"));
- _saveItemCommand.Parameters.Add(new SQLiteParameter("@3"));
+ _deleteChildrenCommand = _connection.CreateCommand();
+ _deleteChildrenCommand.CommandText = "delete from ChildrenIds where ParentId=@ParentId";
+ _deleteChildrenCommand.Parameters.Add(_deleteChildrenCommand, "@ParentId");
- _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"));
+ _saveChildrenCommand = _connection.CreateCommand();
+ _saveChildrenCommand.CommandText = "replace into ChildrenIds (ParentId, ItemId) values (@ParentId, @ItemId)";
+ _saveChildrenCommand.Parameters.Add(_saveChildrenCommand, "@ParentId");
+ _saveChildrenCommand.Parameters.Add(_saveChildrenCommand, "@ItemId");
}
///
@@ -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();