diff options
Diffstat (limited to 'MediaBrowser.Server.Implementations/Library')
5 files changed, 38 insertions, 18 deletions
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<BaseItem> GetItems(InternalItemsQuery query) + public IEnumerable<BaseItem> 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<BaseItem> - { - Items = items - }; + return result.Select(GetItemById).Where(i => i != null); } public QueryResult<BaseItem> QueryItems(InternalItemsQuery query) @@ -1342,7 +1337,7 @@ namespace MediaBrowser.Server.Implementations.Library return ItemRepository.GetItemIdsList(query); } - public IEnumerable<BaseItem> GetItems(InternalItemsQuery query, IEnumerable<string> parentIds) + public IEnumerable<BaseItem> GetItemList(InternalItemsQuery query, IEnumerable<string> 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<BaseItem> GetItemsResult(InternalItemsQuery query) + { + if (query.Recursive && query.ParentId.HasValue) + { + var parent = GetItemById(query.ParentId.Value); + if (parent != null) + { + SetTopParentIdsOrAncestors(query, new List<BaseItem> { parent }); + query.ParentId = null; + } + } + + if (query.User != null) + { + AddUserToQuery(query, query.User); + } + + var initialResult = ItemRepository.GetItemIds(query); + + return new QueryResult<BaseItem> + { + TotalRecordCount = initialResult.TotalRecordCount, + Items = initialResult.Items.Select(GetItemById).Where(i => i != null).ToArray() + }; + } + public QueryResult<BaseItem> GetItemsResult(InternalItemsQuery query, IEnumerable<string> 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<BaseItem> 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(); } } diff --git a/MediaBrowser.Server.Implementations/Library/LocalTrailerPostScanTask.cs b/MediaBrowser.Server.Implementations/Library/LocalTrailerPostScanTask.cs index 10263f7d7..4e23b5e93 100644 --- a/MediaBrowser.Server.Implementations/Library/LocalTrailerPostScanTask.cs +++ b/MediaBrowser.Server.Implementations/Library/LocalTrailerPostScanTask.cs @@ -4,6 +4,7 @@ using MediaBrowser.Controller.Library; using MediaBrowser.Model.Channels; using MediaBrowser.Model.Entities; using System; +using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; @@ -28,16 +29,14 @@ namespace MediaBrowser.Server.Implementations.Library .Cast<IHasTrailers>() .ToList(); - var trailerResult = _libraryManager.GetItems(new InternalItemsQuery + var trailers = _libraryManager.GetItemList(new InternalItemsQuery { IncludeItemTypes = new[] { typeof(Trailer).Name }, ExcludeTrailerTypes = new[] { TrailerType.LocalTrailer } - - }); - var trailers = trailerResult.Items; + }).ToArray(); var numComplete = 0; diff --git a/MediaBrowser.Server.Implementations/Library/MusicManager.cs b/MediaBrowser.Server.Implementations/Library/MusicManager.cs index 11a1f190a..aad7c112b 100644 --- a/MediaBrowser.Server.Implementations/Library/MusicManager.cs +++ b/MediaBrowser.Server.Implementations/Library/MusicManager.cs @@ -80,7 +80,7 @@ namespace MediaBrowser.Server.Implementations.Library { var genreList = genres.ToList(); - var inputItems = _libraryManager.GetItems(new InternalItemsQuery(user) + var inputItems = _libraryManager.GetItemList(new InternalItemsQuery(user) { IncludeItemTypes = new[] { typeof(Audio).Name }, diff --git a/MediaBrowser.Server.Implementations/Library/SearchEngine.cs b/MediaBrowser.Server.Implementations/Library/SearchEngine.cs index 62392c1c7..276fc329f 100644 --- a/MediaBrowser.Server.Implementations/Library/SearchEngine.cs +++ b/MediaBrowser.Server.Implementations/Library/SearchEngine.cs @@ -157,7 +157,7 @@ namespace MediaBrowser.Server.Implementations.Library AddIfMissing(excludeItemTypes, typeof(CollectionFolder).Name); - var mediaItems = _libraryManager.GetItems(new InternalItemsQuery(user) + var mediaItems = _libraryManager.GetItemList(new InternalItemsQuery(user) { NameContains = searchTerm, ExcludeItemTypes = excludeItemTypes.ToArray(), diff --git a/MediaBrowser.Server.Implementations/Library/UserViewManager.cs b/MediaBrowser.Server.Implementations/Library/UserViewManager.cs index 9d276ada2..37046bfef 100644 --- a/MediaBrowser.Server.Implementations/Library/UserViewManager.cs +++ b/MediaBrowser.Server.Implementations/Library/UserViewManager.cs @@ -278,7 +278,7 @@ namespace MediaBrowser.Server.Implementations.Library } : new string[] { }; - return _libraryManager.GetItems(new InternalItemsQuery(user) + return _libraryManager.GetItemList(new InternalItemsQuery(user) { IncludeItemTypes = includeItemTypes, SortOrder = SortOrder.Descending, |
