aboutsummaryrefslogtreecommitdiff
path: root/Jellyfin.Server.Implementations/Item/PeopleRepository.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Jellyfin.Server.Implementations/Item/PeopleRepository.cs')
-rw-r--r--Jellyfin.Server.Implementations/Item/PeopleRepository.cs24
1 files changed, 24 insertions, 0 deletions
diff --git a/Jellyfin.Server.Implementations/Item/PeopleRepository.cs b/Jellyfin.Server.Implementations/Item/PeopleRepository.cs
index a8dfd4cd3..77b00a41a 100644
--- a/Jellyfin.Server.Implementations/Item/PeopleRepository.cs
+++ b/Jellyfin.Server.Implementations/Item/PeopleRepository.cs
@@ -39,6 +39,30 @@ public class PeopleRepository(IDbContextFactory<JellyfinDbContext> dbProvider, I
dbQuery = dbQuery.Take(filter.Limit);
}
+ // Include PeopleBaseItemMap
+ if (!filter.ItemId.IsEmpty())
+ {
+ var people = dbQuery.ToArray();
+ var peopleIds = people.Select(p => p.Id).ToArray();
+
+ var mappings = context.PeopleBaseItemMap
+ .AsNoTracking()
+ .Where(m => peopleIds.Contains(m.PeopleId) && m.ItemId == filter.ItemId)
+ .ToDictionary(m => m.PeopleId);
+
+ return people.Select(p =>
+ {
+ var personInfo = Map(p);
+ if (mappings.TryGetValue(p.Id, out var mapping))
+ {
+ personInfo.Role = mapping.Role;
+ personInfo.SortOrder = mapping.SortOrder;
+ }
+
+ return personInfo;
+ }).ToArray();
+ }
+
return dbQuery.AsEnumerable().Select(Map).ToArray();
}