diff options
| author | Cody Robibero <cody@robibe.ro> | 2026-08-30 13:29:59 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-08-30 13:29:59 -0400 |
| commit | 0d78e44633ecd1e70d8c6d76223164cba2a4c84d (patch) | |
| tree | 94664afca689db664ffa983e04d483c0dac9121b | |
| parent | 4962e4ec33dcc0f208eef7ccf72a78d26c5f2ae8 (diff) | |
| parent | 07e97c0ee9e740c97e2ef38c3f54af03d7c7b946 (diff) | |
Merge pull request #17739 from Shadowghost/simplify-search-query
Filter search candidates by user access in a single query
| -rw-r--r-- | Emby.Server.Implementations/Library/Search/SearchManager.cs | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/Emby.Server.Implementations/Library/Search/SearchManager.cs b/Emby.Server.Implementations/Library/Search/SearchManager.cs index 0e180753a6..306a8673d5 100644 --- a/Emby.Server.Implementations/Library/Search/SearchManager.cs +++ b/Emby.Server.Implementations/Library/Search/SearchManager.cs @@ -112,13 +112,12 @@ public class SearchManager : ISearchManager return externalResults; } - var internalResults = await internalTask.ConfigureAwait(false); if (_internalProviders.Length > 0) { _logger.LogDebug("No results from external providers, using internal provider results"); } - return internalResults; + return await internalTask.ConfigureAwait(false); } private async Task<IReadOnlyList<SearchResult>> FilterByUserAccessAsync( @@ -144,17 +143,16 @@ public class SearchManager : ISearchManager baseQuery = _queryHelpers.ApplyAccessFiltering(dbContext, baseQuery, accessFilter); - var allowedCount = await baseQuery.CountAsync(cancellationToken).ConfigureAwait(false); - if (allowedCount == candidates.Count) - { - return candidates; - } - var allowedIds = await baseQuery .Select(e => e.Id) .ToHashSetAsync(cancellationToken) .ConfigureAwait(false); + if (allowedIds.Count == candidates.Count) + { + return candidates; + } + var filtered = candidates.Where(c => allowedIds.Contains(c.ItemId)).ToList(); if (filtered.Count < candidates.Count) { |
