aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Api/UserLibrary/PersonsService.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Api/UserLibrary/PersonsService.cs')
-rw-r--r--MediaBrowser.Api/UserLibrary/PersonsService.cs60
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)