|
@@ -63,8 +63,6 @@ namespace MediaBrowser.Server.Implementations.Persistence
|
|
|
|
|
|
private readonly string _criticReviewsPath;
|
|
|
|
|
|
- private IDbCommand _deleteChildrenCommand;
|
|
|
- private IDbCommand _saveChildrenCommand;
|
|
|
private IDbCommand _deleteItemCommand;
|
|
|
|
|
|
private IDbCommand _deletePeopleCommand;
|
|
@@ -138,9 +136,6 @@ namespace MediaBrowser.Server.Implementations.Persistence
|
|
|
"create index if not exists idx_AncestorIds1 on AncestorIds(AncestorId)",
|
|
|
"create index if not exists idx_AncestorIds2 on AncestorIds(AncestorIdText)",
|
|
|
|
|
|
- "create table if not exists ChildrenIds (ParentId GUID, ItemId GUID, PRIMARY KEY (ParentId, ItemId))",
|
|
|
- "create index if not exists idx_ChildrenIds on ChildrenIds(ParentId,ItemId)",
|
|
|
-
|
|
|
"create table if not exists People (ItemId GUID, Name TEXT NOT NULL, Role TEXT, PersonType TEXT, SortOrder int, ListOrder int)",
|
|
|
"create index if not exists idxPeopleItemId on People(ItemId)",
|
|
|
"create index if not exists idxPeopleName on People(Name)",
|
|
@@ -477,19 +472,10 @@ namespace MediaBrowser.Server.Implementations.Persistence
|
|
|
}
|
|
|
_saveItemCommand.CommandText += ")";
|
|
|
|
|
|
- _deleteChildrenCommand = _connection.CreateCommand();
|
|
|
- _deleteChildrenCommand.CommandText = "delete from ChildrenIds where ParentId=@ParentId";
|
|
|
- _deleteChildrenCommand.Parameters.Add(_deleteChildrenCommand, "@ParentId");
|
|
|
-
|
|
|
_deleteItemCommand = _connection.CreateCommand();
|
|
|
_deleteItemCommand.CommandText = "delete from TypedBaseItems where guid=@Id";
|
|
|
_deleteItemCommand.Parameters.Add(_deleteItemCommand, "@Id");
|
|
|
|
|
|
- _saveChildrenCommand = _connection.CreateCommand();
|
|
|
- _saveChildrenCommand.CommandText = "replace into ChildrenIds (ParentId, ItemId) values (@ParentId, @ItemId)";
|
|
|
- _saveChildrenCommand.Parameters.Add(_saveChildrenCommand, "@ParentId");
|
|
|
- _saveChildrenCommand.Parameters.Add(_saveChildrenCommand, "@ItemId");
|
|
|
-
|
|
|
// People
|
|
|
_deletePeopleCommand = _connection.CreateCommand();
|
|
|
_deletePeopleCommand.CommandText = "delete from People where ItemId=@Id";
|
|
@@ -1375,63 +1361,6 @@ namespace MediaBrowser.Server.Implementations.Persistence
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- public IEnumerable<Guid> GetChildren(Guid parentId)
|
|
|
- {
|
|
|
- if (parentId == Guid.Empty)
|
|
|
- {
|
|
|
- throw new ArgumentNullException("parentId");
|
|
|
- }
|
|
|
-
|
|
|
- CheckDisposed();
|
|
|
-
|
|
|
- using (var cmd = _connection.CreateCommand())
|
|
|
- {
|
|
|
- cmd.CommandText = "select ItemId from ChildrenIds where ParentId = @ParentId";
|
|
|
-
|
|
|
- cmd.Parameters.Add(cmd, "@ParentId", DbType.Guid).Value = parentId;
|
|
|
-
|
|
|
- using (var reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess | CommandBehavior.SingleResult))
|
|
|
- {
|
|
|
- while (reader.Read())
|
|
|
- {
|
|
|
- yield return reader.GetGuid(0);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- public IEnumerable<BaseItem> GetChildrenItems(Guid parentId)
|
|
|
- {
|
|
|
- if (parentId == Guid.Empty)
|
|
|
- {
|
|
|
- throw new ArgumentNullException("parentId");
|
|
|
- }
|
|
|
-
|
|
|
- CheckDisposed();
|
|
|
-
|
|
|
- using (var cmd = _connection.CreateCommand())
|
|
|
- {
|
|
|
- cmd.CommandText = "select " + string.Join(",", _retriveItemColumns) + " from TypedBaseItems where guid in (select ItemId from ChildrenIds where ParentId = @ParentId)";
|
|
|
-
|
|
|
- cmd.Parameters.Add(cmd, "@ParentId", DbType.Guid).Value = parentId;
|
|
|
-
|
|
|
- //Logger.Debug(cmd.CommandText);
|
|
|
-
|
|
|
- using (var reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess | CommandBehavior.SingleResult))
|
|
|
- {
|
|
|
- while (reader.Read())
|
|
|
- {
|
|
|
- var item = GetItem(reader);
|
|
|
-
|
|
|
- if (item != null)
|
|
|
- {
|
|
|
- yield return item;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
public IEnumerable<BaseItem> GetItemsOfType(Type type)
|
|
|
{
|
|
|
if (type == null)
|
|
@@ -2392,11 +2321,6 @@ namespace MediaBrowser.Server.Implementations.Persistence
|
|
|
{
|
|
|
transaction = _connection.BeginTransaction();
|
|
|
|
|
|
- // First delete children
|
|
|
- _deleteChildrenCommand.GetParameter(0).Value = id;
|
|
|
- _deleteChildrenCommand.Transaction = transaction;
|
|
|
- _deleteChildrenCommand.ExecuteNonQuery();
|
|
|
-
|
|
|
// Delete people
|
|
|
_deletePeopleCommand.GetParameter(0).Value = id;
|
|
|
_deletePeopleCommand.Transaction = transaction;
|
|
@@ -2455,79 +2379,6 @@ namespace MediaBrowser.Server.Implementations.Persistence
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- public async Task SaveChildren(Guid parentId, IEnumerable<Guid> children, CancellationToken cancellationToken)
|
|
|
- {
|
|
|
- if (parentId == Guid.Empty)
|
|
|
- {
|
|
|
- throw new ArgumentNullException("parentId");
|
|
|
- }
|
|
|
-
|
|
|
- if (children == null)
|
|
|
- {
|
|
|
- throw new ArgumentNullException("children");
|
|
|
- }
|
|
|
-
|
|
|
- CheckDisposed();
|
|
|
-
|
|
|
- await WriteLock.WaitAsync(cancellationToken).ConfigureAwait(false);
|
|
|
-
|
|
|
- IDbTransaction transaction = null;
|
|
|
-
|
|
|
- try
|
|
|
- {
|
|
|
- transaction = _connection.BeginTransaction();
|
|
|
-
|
|
|
- // First delete
|
|
|
- _deleteChildrenCommand.GetParameter(0).Value = parentId;
|
|
|
- _deleteChildrenCommand.Transaction = transaction;
|
|
|
-
|
|
|
- _deleteChildrenCommand.ExecuteNonQuery();
|
|
|
-
|
|
|
- foreach (var id in children)
|
|
|
- {
|
|
|
- cancellationToken.ThrowIfCancellationRequested();
|
|
|
-
|
|
|
- _saveChildrenCommand.GetParameter(0).Value = parentId;
|
|
|
- _saveChildrenCommand.GetParameter(1).Value = id;
|
|
|
-
|
|
|
- _saveChildrenCommand.Transaction = transaction;
|
|
|
-
|
|
|
- _saveChildrenCommand.ExecuteNonQuery();
|
|
|
- }
|
|
|
-
|
|
|
- transaction.Commit();
|
|
|
- }
|
|
|
- catch (OperationCanceledException)
|
|
|
- {
|
|
|
- if (transaction != null)
|
|
|
- {
|
|
|
- transaction.Rollback();
|
|
|
- }
|
|
|
-
|
|
|
- throw;
|
|
|
- }
|
|
|
- catch (Exception e)
|
|
|
- {
|
|
|
- Logger.ErrorException("Failed to save children:", e);
|
|
|
-
|
|
|
- if (transaction != null)
|
|
|
- {
|
|
|
- transaction.Rollback();
|
|
|
- }
|
|
|
-
|
|
|
- throw;
|
|
|
- }
|
|
|
- finally
|
|
|
- {
|
|
|
- if (transaction != null)
|
|
|
- {
|
|
|
- transaction.Dispose();
|
|
|
- }
|
|
|
-
|
|
|
- WriteLock.Release();
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
public List<string> GetPeopleNames(InternalPeopleQuery query)
|
|
|
{
|
|
|
if (query == null)
|