aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2016-03-20 17:32:26 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2016-03-20 17:32:26 -0400
commita2a0e1ae756b3eae6635ebb08ca1cad51898e0b8 (patch)
treef5d6081d36a8a83eb2548e54d4ae3144ebf24e13
parentf4d61ddcc69b2577c456390a87c78726464f630b (diff)
fix query by multiple ids
-rw-r--r--MediaBrowser.Controller/Entities/Folder.cs34
-rw-r--r--MediaBrowser.Server.Implementations/Channels/ChannelPostScanTask.cs8
-rw-r--r--MediaBrowser.Server.Implementations/Library/LibraryManager.cs7
3 files changed, 38 insertions, 11 deletions
diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs
index b36524851..dc0a8d0aa 100644
--- a/MediaBrowser.Controller/Entities/Folder.cs
+++ b/MediaBrowser.Controller/Entities/Folder.cs
@@ -167,7 +167,7 @@ namespace MediaBrowser.Controller.Entities
{
lock (_childrenSyncLock)
{
- var newChildren = _children.ToList();
+ var newChildren = ChildIds.ToList();
newChildren.AddRange(children);
_children = newChildren.ToList();
}
@@ -176,11 +176,11 @@ namespace MediaBrowser.Controller.Entities
{
lock (_childrenSyncLock)
{
- if (!_children.Contains(child))
+ var childIds = ChildIds.ToList();
+ if (!childIds.Contains(child))
{
- var newChildren = _children.ToList();
- newChildren.Add(child);
- _children = newChildren.ToList();
+ childIds.Add(child);
+ _children = childIds.ToList();
}
}
}
@@ -189,7 +189,7 @@ namespace MediaBrowser.Controller.Entities
{
lock (_childrenSyncLock)
{
- _children = _children.Except(children).ToList();
+ _children = ChildIds.Except(children).ToList();
}
}
@@ -257,7 +257,7 @@ namespace MediaBrowser.Controller.Entities
/// Gets or sets the actual children.
/// </summary>
/// <value>The actual children.</value>
- protected virtual IEnumerable<BaseItem> ActualChildren
+ protected virtual IEnumerable<Guid> ChildIds
{
get
{
@@ -267,12 +267,24 @@ namespace MediaBrowser.Controller.Entities
{
_children = LoadChildren().ToList();
}
- return _children.Select(LibraryManager.GetItemById).Where(i => i != null);
+ return _children.ToList();
}
}
}
/// <summary>
+ /// Gets the actual children.
+ /// </summary>
+ /// <value>The actual children.</value>
+ protected virtual IEnumerable<BaseItem> ActualChildren
+ {
+ get
+ {
+ return ChildIds.Select(LibraryManager.GetItemById).Where(i => i != null);
+ }
+ }
+
+ /// <summary>
/// thread-safe access to the actual children of this folder - without regard to user
/// </summary>
/// <value>The children.</value>
@@ -912,6 +924,12 @@ namespace MediaBrowser.Controller.Entities
}
}
+ if (query.ItemIds.Length > 0)
+ {
+ Logger.Debug("Query requires post-filtering due to ItemIds");
+ return true;
+ }
+
if (query.PersonIds.Length > 0)
{
Logger.Debug("Query requires post-filtering due to PersonIds");
diff --git a/MediaBrowser.Server.Implementations/Channels/ChannelPostScanTask.cs b/MediaBrowser.Server.Implementations/Channels/ChannelPostScanTask.cs
index da4a72cd4..08783ae8d 100644
--- a/MediaBrowser.Server.Implementations/Channels/ChannelPostScanTask.cs
+++ b/MediaBrowser.Server.Implementations/Channels/ChannelPostScanTask.cs
@@ -55,7 +55,7 @@ namespace MediaBrowser.Server.Implementations.Channels
}
await CleanDatabase(cancellationToken).ConfigureAwait(false);
-
+
progress.Report(100);
}
@@ -167,10 +167,14 @@ namespace MediaBrowser.Server.Implementations.Channels
{
var item = _libraryManager.GetItemById(id);
+ if (item == null)
+ {
+ return Task.FromResult(true);
+ }
+
return _libraryManager.DeleteItem(item, new DeleteOptions
{
DeleteFileLocation = false
-
});
}
diff --git a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
index bf895e5ce..50d365335 100644
--- a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
+++ b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
@@ -369,9 +369,14 @@ namespace MediaBrowser.Server.Implementations.Library
public async Task DeleteItem(BaseItem item, DeleteOptions options)
{
+ if (item == null)
+ {
+ throw new ArgumentNullException("item");
+ }
+
_logger.Debug("Deleting item, Type: {0}, Name: {1}, Path: {2}, Id: {3}",
item.GetType().Name,
- item.Name,
+ item.Name ?? "Unknown name",
item.Path ?? string.Empty,
item.Id);