From d64e18b69a0a6089aab350f33464f362f09de942 Mon Sep 17 00:00:00 2001 From: Shadowghost Date: Wed, 29 Jul 2026 09:35:20 +0200 Subject: Fix more filter cases --- .../Persistence/IItemQueryHelpers.cs | 26 +++++++++++++++------- 1 file changed, 18 insertions(+), 8 deletions(-) (limited to 'MediaBrowser.Controller') diff --git a/MediaBrowser.Controller/Persistence/IItemQueryHelpers.cs b/MediaBrowser.Controller/Persistence/IItemQueryHelpers.cs index e74cc38f7a..f9a050d591 100644 --- a/MediaBrowser.Controller/Persistence/IItemQueryHelpers.cs +++ b/MediaBrowser.Controller/Persistence/IItemQueryHelpers.cs @@ -1,5 +1,6 @@ using System; using System.Linq; +using System.Linq.Expressions; using Jellyfin.Database.Implementations; using Jellyfin.Database.Implementations.Entities; using MediaBrowser.Controller.Entities; @@ -79,17 +80,26 @@ public interface IItemQueryHelpers Guid ancestorId); /// - /// Builds an of folder IDs that have at least one unplayed - /// descendant for the given user. Composable into outer queries to avoid an extra DB roundtrip. + /// Builds a query for the playable leaf items a user can access. /// /// The database context the resulting query is bound to. - /// A query yielding candidate folder IDs. - /// The user for access filtering and played status. - /// An of folder IDs with unplayed descendants. - IQueryable GetFoldersWithUnplayedItemsQuery( + /// The user to filter accessible items for. + /// Whether to include alternate versions and owned items. + /// The access-filtered leaf item queryable. + IQueryable GetAccessFilteredLeafItemsQuery( JellyfinDbContext context, - IQueryable folderIds, - User user); + User user, + bool includeOwnedItems = false); + + /// + /// Builds a filter matching items that have at least one of below them. + /// + /// The database context the resulting filter is bound to. + /// A query yielding the descendants to look for. + /// A filter expression matching items with a matching descendant. + Expression> BuildHasDescendantFilter( + JellyfinDbContext context, + IQueryable descendants); /// /// Deserializes a into a . -- cgit v1.2.3