diff options
| author | Cody Robibero <cody@robibe.ro> | 2026-08-22 08:50:42 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-08-22 08:50:42 -0400 |
| commit | 0d02638e82aa06a0a4df147724255fb05c844b7e (patch) | |
| tree | ae99ea9e2c4f9a66e474354baf64e95d63305693 | |
| parent | 682c45090cf8c9438840bc55933992b115ed6746 (diff) | |
| parent | 20b4a5928123f5eaa9f663625efdbb3c4f713252 (diff) | |
Merge pull request #17700 from Shadowghost/better-people-resolution
Look up people by item via the credit map instead of a full scan
| -rw-r--r-- | Jellyfin.Server.Implementations/Item/PeopleRepository.cs | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/Jellyfin.Server.Implementations/Item/PeopleRepository.cs b/Jellyfin.Server.Implementations/Item/PeopleRepository.cs index a592d0e6e2..aaa363b046 100644 --- a/Jellyfin.Server.Implementations/Item/PeopleRepository.cs +++ b/Jellyfin.Server.Implementations/Item/PeopleRepository.cs @@ -351,7 +351,11 @@ public class PeopleRepository(IDbContextFactory<JellyfinDbContext> dbProvider, I if (!filter.ItemId.IsEmpty()) { - query = query.Where(e => e.BaseItems!.Any(w => w.ItemId.Equals(filter.ItemId))); + var itemId = filter.ItemId; + query = query.Where(e => context.PeopleBaseItemMap + .Where(m => m.ItemId.Equals(itemId)) + .Select(m => m.PeopleId) + .Contains(e.Id)); } if (filter.ParentId != null) @@ -361,7 +365,11 @@ public class PeopleRepository(IDbContextFactory<JellyfinDbContext> dbProvider, I if (!filter.AppearsInItemId.IsEmpty()) { - query = query.Where(e => e.BaseItems!.Any(w => w.ItemId.Equals(filter.AppearsInItemId))); + var appearsInItemId = filter.AppearsInItemId; + query = query.Where(e => context.PeopleBaseItemMap + .Where(m => m.ItemId.Equals(appearsInItemId)) + .Select(m => m.PeopleId) + .Contains(e.Id)); } var queryPersonTypes = filter.PersonTypes.Where(IsValidPersonType).ToList(); |
