diff options
| author | Mikal S. <7761729+revam@users.noreply.github.com> | 2025-09-22 17:56:41 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-09-22 09:56:41 -0600 |
| commit | 162985bb232420c2e09b0597305b68bd25faac00 (patch) | |
| tree | 3331156463ec64fa01dd1e4abd8ee158fa9979f3 | |
| parent | 0d2c551cce745e50266426e96ee00c5282de43bd (diff) | |
fix: add back missing behavior for HasAnyProviderId (#14831)
| -rw-r--r-- | Jellyfin.Server.Implementations/Item/BaseItemRepository.cs | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/Jellyfin.Server.Implementations/Item/BaseItemRepository.cs b/Jellyfin.Server.Implementations/Item/BaseItemRepository.cs index 30de711ea..971297d55 100644 --- a/Jellyfin.Server.Implementations/Item/BaseItemRepository.cs +++ b/Jellyfin.Server.Implementations/Item/BaseItemRepository.cs @@ -2278,8 +2278,18 @@ public sealed class BaseItemRepository if (filter.HasAnyProviderId is not null && filter.HasAnyProviderId.Count > 0) { - var include = filter.HasAnyProviderId.Select(e => $"{e.Key}:{e.Value}").ToArray(); - baseQuery = baseQuery.Where(e => e.Provider!.Select(f => f.ProviderId + ":" + f.ProviderValue)!.Any(f => include.Contains(f))); + // Allow setting a null or empty value to get all items that have the specified provider set. + var includeAny = filter.HasAnyProviderId.Where(e => string.IsNullOrEmpty(e.Value)).Select(e => e.Key).ToArray(); + if (includeAny.Length > 0) + { + baseQuery = baseQuery.Where(e => e.Provider!.Any(f => includeAny.Contains(f.ProviderId))); + } + + var includeSelected = filter.HasAnyProviderId.Where(e => !string.IsNullOrEmpty(e.Value)).Select(e => $"{e.Key}:{e.Value}").ToArray(); + if (includeSelected.Length > 0) + { + baseQuery = baseQuery.Where(e => e.Provider!.Select(f => f.ProviderId + ":" + f.ProviderValue)!.Any(f => includeSelected.Contains(f))); + } } if (filter.HasImdbId.HasValue) |
