diff options
| author | Shadowghost <Ghost_of_Stone@web.de> | 2026-06-12 08:09:10 +0200 |
|---|---|---|
| committer | Shadowghost <Ghost_of_Stone@web.de> | 2026-06-12 08:35:30 +0200 |
| commit | 0aeee8233bd0e602bd4523125d2c44b847d3fc7a (patch) | |
| tree | adfeb5bcf0f5f822598c94d784cfeaa8e6866840 /Jellyfin.Server.Implementations/Item | |
| parent | 95de28cddad3344df85a452992bdc591b11552f7 (diff) | |
Fix performance
Diffstat (limited to 'Jellyfin.Server.Implementations/Item')
| -rw-r--r-- | Jellyfin.Server.Implementations/Item/BaseItemRepository.TranslateQuery.cs | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/Jellyfin.Server.Implementations/Item/BaseItemRepository.TranslateQuery.cs b/Jellyfin.Server.Implementations/Item/BaseItemRepository.TranslateQuery.cs index a9856f2e76..96d6d2eaff 100644 --- a/Jellyfin.Server.Implementations/Item/BaseItemRepository.TranslateQuery.cs +++ b/Jellyfin.Server.Implementations/Item/BaseItemRepository.TranslateQuery.cs @@ -546,9 +546,8 @@ public sealed partial class BaseItemRepository // Non-series items: resumable if the item or any of its alternate versions has // PlaybackPositionTicks > 0. Alternate versions (PrimaryVersionId set) are excluded // from the base query, so coalesce their progress onto the primary's id. - var resumableMovieIds = context.BaseItems - .Where(bi => bi.UserData!.Any(ud => ud.UserId == userId && ud.PlaybackPositionTicks > 0)) - .Select(bi => bi.PrimaryVersionId ?? bi.Id); + var resumableMovieIds = inProgress + .Join(context.BaseItems, ud => ud.ItemId, bi => bi.Id, (ud, bi) => bi.PrimaryVersionId ?? bi.Id); baseQuery = baseQuery.Where(e => (e.Type == seriesTypeName && resumableSeriesIds.Contains(e.Id) == isResumable) @@ -559,9 +558,8 @@ public sealed partial class BaseItemRepository // Resumable if the item or any of its alternate versions has PlaybackPositionTicks > 0. // Alternate versions (PrimaryVersionId set) are excluded from the base query, so // coalesce their progress onto the primary's id. - var resumableMovieIds = context.BaseItems - .Where(bi => bi.UserData!.Any(ud => ud.UserId == userId && ud.PlaybackPositionTicks > 0)) - .Select(bi => bi.PrimaryVersionId ?? bi.Id); + var resumableMovieIds = inProgress + .Join(context.BaseItems, ud => ud.ItemId, bi => bi.Id, (ud, bi) => bi.PrimaryVersionId ?? bi.Id); baseQuery = baseQuery.Where(e => resumableMovieIds.Contains(e.Id) == isResumable); } |
