From 4b7093e923b457f34f717f286ebb08514cfb9067 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sun, 20 Mar 2016 02:46:51 -0400 Subject: get recursive items from db --- .../Library/LibraryManager.cs | 43 ++++++++++++++++------ 1 file changed, 32 insertions(+), 11 deletions(-) (limited to 'MediaBrowser.Server.Implementations/Library/LibraryManager.cs') diff --git a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs index 19b66836b..bf895e5ce 100644 --- a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs +++ b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs @@ -813,7 +813,7 @@ namespace MediaBrowser.Server.Implementations.Library { return null; } - + return RootFolder.FindByPath(path); } @@ -1305,7 +1305,7 @@ namespace MediaBrowser.Server.Implementations.Library return item; } - public QueryResult GetItems(InternalItemsQuery query) + public IEnumerable GetItemList(InternalItemsQuery query) { if (query.User != null) { @@ -1314,12 +1314,7 @@ namespace MediaBrowser.Server.Implementations.Library var result = ItemRepository.GetItemIdsList(query); - var items = result.Select(GetItemById).Where(i => i != null).ToArray(); - - return new QueryResult - { - Items = items - }; + return result.Select(GetItemById).Where(i => i != null); } public QueryResult QueryItems(InternalItemsQuery query) @@ -1342,7 +1337,7 @@ namespace MediaBrowser.Server.Implementations.Library return ItemRepository.GetItemIdsList(query); } - public IEnumerable GetItems(InternalItemsQuery query, IEnumerable parentIds) + public IEnumerable GetItemList(InternalItemsQuery query, IEnumerable parentIds) { var parents = parentIds.Select(i => GetItemById(new Guid(i))).Where(i => i != null).ToList(); @@ -1351,13 +1346,39 @@ namespace MediaBrowser.Server.Implementations.Library return GetItemIds(query).Select(GetItemById).Where(i => i != null); } + public QueryResult GetItemsResult(InternalItemsQuery query) + { + if (query.Recursive && query.ParentId.HasValue) + { + var parent = GetItemById(query.ParentId.Value); + if (parent != null) + { + SetTopParentIdsOrAncestors(query, new List { parent }); + query.ParentId = null; + } + } + + if (query.User != null) + { + AddUserToQuery(query, query.User); + } + + var initialResult = ItemRepository.GetItemIds(query); + + return new QueryResult + { + TotalRecordCount = initialResult.TotalRecordCount, + Items = initialResult.Items.Select(GetItemById).Where(i => i != null).ToArray() + }; + } + public QueryResult GetItemsResult(InternalItemsQuery query, IEnumerable parentIds) { var parents = parentIds.Select(i => GetItemById(new Guid(i))).Where(i => i != null).ToList(); SetTopParentIdsOrAncestors(query, parents); - return GetItems(query); + return GetItemsResult(query); } private void SetTopParentIdsOrAncestors(InternalItemsQuery query, List parents) @@ -2545,7 +2566,7 @@ namespace MediaBrowser.Server.Implementations.Library // Remove this image to prevent it from retrying over and over item.RemoveImage(image); await item.UpdateToRepository(ItemUpdateType.ImageUpdate, CancellationToken.None).ConfigureAwait(false); - + throw new InvalidOperationException(); } } -- cgit v1.2.3