diff options
| author | theguymadmax <theguymadmax@proton.me> | 2025-10-13 10:09:09 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-10-13 09:09:09 -0600 |
| commit | 794e1361d79374df7a07dcb9092eb1d981a9e80b (patch) | |
| tree | 83b9c7346b64e527c54b65d9c887d679e7230c75 /Jellyfin.Server.Implementations/Item | |
| parent | 27c9c9c0ed2406162028bff5fb1ab74cef68d8e4 (diff) | |
Fix contributing artist query (#14991)
Diffstat (limited to 'Jellyfin.Server.Implementations/Item')
| -rw-r--r-- | Jellyfin.Server.Implementations/Item/BaseItemRepository.cs | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/Jellyfin.Server.Implementations/Item/BaseItemRepository.cs b/Jellyfin.Server.Implementations/Item/BaseItemRepository.cs index f4396301c..eb88eac00 100644 --- a/Jellyfin.Server.Implementations/Item/BaseItemRepository.cs +++ b/Jellyfin.Server.Implementations/Item/BaseItemRepository.cs @@ -2014,7 +2014,7 @@ public sealed class BaseItemRepository if (filter.ArtistIds.Length > 0) { - baseQuery = baseQuery.WhereReferencedItem(context, ItemValueType.Artist, filter.ArtistIds); + baseQuery = baseQuery.WhereReferencedItemMultipleTypes(context, [ItemValueType.Artist, ItemValueType.AlbumArtist], filter.ArtistIds); } if (filter.AlbumArtistIds.Length > 0) @@ -2024,7 +2024,18 @@ public sealed class BaseItemRepository if (filter.ContributingArtistIds.Length > 0) { - baseQuery = baseQuery.WhereReferencedItem(context, ItemValueType.Artist, filter.ContributingArtistIds); + var contributingNames = context.BaseItems + .Where(b => filter.ContributingArtistIds.Contains(b.Id)) + .Select(b => b.CleanName); + + baseQuery = baseQuery.Where(e => + e.ItemValues!.Any(ivm => + ivm.ItemValue.Type == ItemValueType.Artist && + contributingNames.Contains(ivm.ItemValue.CleanValue)) + && + !e.ItemValues!.Any(ivm => + ivm.ItemValue.Type == ItemValueType.AlbumArtist && + contributingNames.Contains(ivm.ItemValue.CleanValue))); } if (filter.AlbumIds.Length > 0) |
