浏览代码

Include PeopleBaseItemMap in GetPeople

Lampan-git 3 月之前
父节点
当前提交
d28ee96f06
共有 1 个文件被更改,包括 24 次插入0 次删除
  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();
     }