Browse Source

Include PeopleBaseItemMap in GetPeople

Lampan-git 3 months ago
parent
commit
d28ee96f06
1 changed files with 24 additions and 0 deletions
  1. 24 0
      Jellyfin.Server.Implementations/Item/PeopleRepository.cs

+ 24 - 0
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();
     }