From 740a10a4e3f85ffcfd26ec18263d4c78d4b14ecc Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Tue, 10 Sep 2013 14:56:00 -0400 Subject: de-normalize item by name data. create counts during library scan for fast access. --- .../UserLibrary/BaseItemsByNameService.cs | 25 +++++----------------- 1 file changed, 5 insertions(+), 20 deletions(-) (limited to 'MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs') 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 /// /// The type of the T item type. public abstract class BaseItemsByNameService : BaseApiService - where TItemType : BaseItem + where TItemType : BaseItem, IItemByName { /// /// The _user manager @@ -38,6 +38,8 @@ namespace MediaBrowser.Api.UserLibrary /// The user manager. /// The library manager. /// The user data repository. + /// The item repository. + /// The dto service. protected BaseItemsByNameService(IUserManager userManager, ILibraryManager libraryManager, IUserDataRepository userDataRepository, IItemRepository itemRepository, IDtoService dtoService) { UserManager = userManager; @@ -292,7 +294,7 @@ namespace MediaBrowser.Api.UserLibrary /// Task{DtoBaseItem}. private async Task GetDto(IbnStub stub, User user, List 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 where T : BaseItem { - private readonly Func> _childItemsFunction; - private List _childItems; - private readonly Func> _itemFunction; private Task _itemTask; @@ -377,11 +368,6 @@ namespace MediaBrowser.Api.UserLibrary private UserItemData _userData; - public List Items - { - get { return _childItems ?? (_childItems = _childItemsFunction().ToList()); } - } - public Task 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> childItems, Func> item) + public IbnStub(string name, Func> item) { Name = name; - _childItemsFunction = childItems; _itemFunction = item; } } -- cgit v1.2.3