get recursive items from db

This commit is contained in:
Luke Pulverenti
2016-03-20 02:46:51 -04:00
parent 9b1cad3ce0
commit 4b7093e923
25 changed files with 663 additions and 171 deletions

View File

@@ -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();
}
}

View File

@@ -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;

View File

@@ -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 },

View File

@@ -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(),

View File

@@ -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,