Omit BoxSet related materialization

This commit is contained in:
Shadowghost
2026-05-03 13:26:30 +02:00
parent 0183127d2a
commit 00b08c0b32
3 changed files with 37 additions and 38 deletions

View File

@@ -471,16 +471,13 @@ public sealed partial class BaseItemRepository
.Select(g => g.Key)
: Enumerable.Empty<Guid>().AsQueryable();
// BoxSet: played = all children played
IEnumerable<Guid> playedBoxSetIds = [];
if (hasBoxSet)
{
var boxSetIds = baseQuery.Where(e => e.Type == boxSetTypeName).Select(e => e.Id).ToList();
var playedCounts = GetPlayedAndTotalCountBatch(boxSetIds, filter.User!);
playedBoxSetIds = playedCounts
.Where(kvp => kvp.Value.Total > 0 && kvp.Value.Played == kvp.Value.Total)
.Select(kvp => kvp.Key);
}
// BoxSet: played = all children played.
IQueryable<Guid> playedBoxSetIds = hasBoxSet
? GetFullyPlayedFolderIdsQuery(
context,
baseQuery.Where(e => e.Type == boxSetTypeName).Select(e => e.Id),
filter.User!)
: Enumerable.Empty<Guid>().AsQueryable();
// Non-folder items: check UserData directly
var playedItemIds = context.UserData