Change GetPeople PeopleBaseItemMap code to query

This commit is contained in:
Lampan-git 2025-03-05 16:59:31 +01:00
parent d28ee96f06
commit 4e3d7383f5

View File

@ -42,25 +42,23 @@ public class PeopleRepository(IDbContextFactory<JellyfinDbContext> dbProvider, I
// Include PeopleBaseItemMap
if (!filter.ItemId.IsEmpty())
{
var people = dbQuery.ToArray();
var peopleIds = people.Select(p => p.Id).ToArray();
var query = dbQuery
.GroupJoin(
context.PeopleBaseItemMap.AsNoTracking().Where(m => m.ItemId == filter.ItemId),
person => person.Id,
mapping => mapping.PeopleId,
(person, mappings) => new { Person = person, Mapping = mappings.FirstOrDefault() });
var mappings = context.PeopleBaseItemMap
.AsNoTracking()
.Where(m => peopleIds.Contains(m.PeopleId) && m.ItemId == filter.ItemId)
.ToDictionary(m => m.PeopleId);
return people.Select(p =>
return query
.AsEnumerable()
.Select(p =>
{
var personInfo = Map(p);
if (mappings.TryGetValue(p.Id, out var mapping))
{
personInfo.Role = mapping.Role;
personInfo.SortOrder = mapping.SortOrder;
}
var personInfo = Map(p.Person);
personInfo.Role = p.Mapping?.Role;
personInfo.SortOrder = p.Mapping?.SortOrder;
return personInfo;
}).ToArray();
})
.ToArray();
}
return dbQuery.AsEnumerable().Select(Map).ToArray();