diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-09-10 14:56:00 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-09-10 14:56:00 -0400 |
| commit | 740a10a4e3f85ffcfd26ec18263d4c78d4b14ecc (patch) | |
| tree | 61462d05ce44c1bb17f48e557b02e14bb480816d /MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs | |
| parent | d078edfb96fe2dcfebdc34e9189f85b0487ac242 (diff) | |
de-normalize item by name data. create counts during library scan for fast access.
Diffstat (limited to 'MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs')
| -rw-r--r-- | MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs | 25 |
1 files changed, 5 insertions, 20 deletions
diff --git a/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs b/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs index d4881c167..fd7925551 100644 --- a/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs +++ b/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs @@ -18,7 +18,7 @@ namespace MediaBrowser.Api.UserLibrary /// </summary> /// <typeparam name="TItemType">The type of the T item type.</typeparam> public abstract class BaseItemsByNameService<TItemType> : BaseApiService - where TItemType : BaseItem + where TItemType : BaseItem, IItemByName { /// <summary> /// The _user manager @@ -38,6 +38,8 @@ namespace MediaBrowser.Api.UserLibrary /// <param name="userManager">The user manager.</param> /// <param name="libraryManager">The library manager.</param> /// <param name="userDataRepository">The user data repository.</param> + /// <param name="itemRepository">The item repository.</param> + /// <param name="dtoService">The dto service.</param> protected BaseItemsByNameService(IUserManager userManager, ILibraryManager libraryManager, IUserDataRepository userDataRepository, IItemRepository itemRepository, IDtoService dtoService) { UserManager = userManager; @@ -292,7 +294,7 @@ namespace MediaBrowser.Api.UserLibrary /// <returns>Task{DtoBaseItem}.</returns> private async Task<BaseItemDto> GetDto(IbnStub<TItemType> stub, User user, List<ItemFields> fields) { - BaseItem item; + TItemType item; try { @@ -307,14 +309,6 @@ namespace MediaBrowser.Api.UserLibrary var dto = user == null ? await DtoService.GetBaseItemDto(item, fields).ConfigureAwait(false) : await DtoService.GetBaseItemDto(item, fields, user).ConfigureAwait(false); - if (fields.Contains(ItemFields.ItemCounts)) - { - var items = stub.Items; - - dto.ChildCount = items.Count; - dto.RecentlyAddedItemCount = items.Count(i => i.IsRecentlyAdded()); - } - return dto; } @@ -367,9 +361,6 @@ namespace MediaBrowser.Api.UserLibrary public class IbnStub<T> where T : BaseItem { - private readonly Func<IEnumerable<BaseItem>> _childItemsFunction; - private List<BaseItem> _childItems; - private readonly Func<string,Task<T>> _itemFunction; private Task<T> _itemTask; @@ -377,11 +368,6 @@ namespace MediaBrowser.Api.UserLibrary private UserItemData _userData; - public List<BaseItem> Items - { - get { return _childItems ?? (_childItems = _childItemsFunction().ToList()); } - } - public Task<T> GetItem() { return _itemTask ?? (_itemTask = _itemFunction(Name)); @@ -394,10 +380,9 @@ namespace MediaBrowser.Api.UserLibrary return _userData ?? (_userData = repo.GetUserData(userId, item.GetUserDataKey())); } - public IbnStub(string name, Func<IEnumerable<BaseItem>> childItems, Func<string,Task<T>> item) + public IbnStub(string name, Func<string,Task<T>> item) { Name = name; - _childItemsFunction = childItems; _itemFunction = item; } } |
