diff options
Diffstat (limited to 'MediaBrowser.Api/UserLibrary/PersonsService.cs')
| -rw-r--r-- | MediaBrowser.Api/UserLibrary/PersonsService.cs | 60 |
1 files changed, 17 insertions, 43 deletions
diff --git a/MediaBrowser.Api/UserLibrary/PersonsService.cs b/MediaBrowser.Api/UserLibrary/PersonsService.cs index 9417447d8..d2c9ef33a 100644 --- a/MediaBrowser.Api/UserLibrary/PersonsService.cs +++ b/MediaBrowser.Api/UserLibrary/PersonsService.cs @@ -7,6 +7,8 @@ using MediaBrowser.Model.Dto; using System.Collections.Generic; using System.Linq; using MediaBrowser.Model.Services; +using System; +using MediaBrowser.Model.Querying; namespace MediaBrowser.Api.UserLibrary { @@ -36,7 +38,7 @@ namespace MediaBrowser.Api.UserLibrary /// </summary> /// <value>The user id.</value> [ApiMember(Name = "UserId", Description = "Optional. Filter by user id, and attach user data", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] - public string UserId { get; set; } + public Guid UserId { get; set; } } /// <summary> @@ -54,7 +56,7 @@ namespace MediaBrowser.Api.UserLibrary { var result = GetItem(request); - return ToOptimizedSerializedResultUsingCache(result); + return ToOptimizedResult(result); } /// <summary> @@ -67,8 +69,8 @@ namespace MediaBrowser.Api.UserLibrary var dtoOptions = GetDtoOptions(AuthorizationContext, request); var item = GetPerson(request.Name, LibraryManager, dtoOptions); - - if (!string.IsNullOrWhiteSpace(request.UserId)) + + if (!request.UserId.Equals(Guid.Empty)) { var user = UserManager.GetUserById(request.UserId); @@ -85,9 +87,7 @@ namespace MediaBrowser.Api.UserLibrary /// <returns>System.Object.</returns> public object Get(GetPersons request) { - var result = GetResult(request); - - return ToOptimizedSerializedResultUsingCache(result); + return GetResultSlim(request); } /// <summary> @@ -98,48 +98,22 @@ namespace MediaBrowser.Api.UserLibrary /// <returns>IEnumerable{Tuple{System.StringFunc{System.Int32}}}.</returns> protected override IEnumerable<BaseItem> GetAllItems(GetItemsByName request, IList<BaseItem> items) { - var inputPersonTypes = ((GetPersons)request).PersonTypes; - var personTypes = string.IsNullOrEmpty(inputPersonTypes) ? new string[] { } : inputPersonTypes.Split(','); - - // Either get all people, or all people filtered by a specific person type - var allPeople = GetAllPeople(items, personTypes); - - return allPeople - .Select(i => i.Name) - .DistinctNames() - - .Select(name => - { - try - { - return LibraryManager.GetPerson(name); - } - catch - { - return null; - // Already logged at lower levels - } - } - - ).Where(i => i != null); + throw new NotImplementedException(); } - /// <summary> - /// Gets all people. - /// </summary> - /// <param name="itemsList">The items list.</param> - /// <param name="personTypes">The person types.</param> - /// <returns>IEnumerable{PersonInfo}.</returns> - private IEnumerable<PersonInfo> GetAllPeople(IList<BaseItem> itemsList, string[] personTypes) + protected override QueryResult<Tuple<BaseItem, ItemCounts>> GetItems(GetItemsByName request, InternalItemsQuery query) { - var allIds = itemsList.Select(i => i.Id).ToArray(); - - var allPeople = LibraryManager.GetPeople(new InternalPeopleQuery + var items = LibraryManager.GetPeopleItems(new InternalPeopleQuery { - PersonTypes = personTypes + PersonTypes = query.PersonTypes, + NameContains = query.NameContains ?? query.SearchTerm }); - return allPeople.Where(i => allIds.Contains(i.ItemId)).OrderBy(p => p.SortOrder ?? int.MaxValue).ThenBy(p => p.Type); + return new QueryResult<Tuple<BaseItem, ItemCounts>> + { + TotalRecordCount = items.Count, + Items = items.Take(query.Limit ?? int.MaxValue).Select(i => new Tuple<BaseItem, ItemCounts>(i, new ItemCounts())).ToArray() + }; } public PersonsService(IUserManager userManager, ILibraryManager libraryManager, IUserDataManager userDataRepository, IItemRepository itemRepository, IDtoService dtoService, IAuthorizationContext authorizationContext) : base(userManager, libraryManager, userDataRepository, itemRepository, dtoService, authorizationContext) |
