Minor search provider enhancement. Minor UI updates.
All checks were successful
ci / build-test (push) Successful in 3m19s
ci / publish-image (push) Has been skipped

This commit is contained in:
2025-11-23 17:14:22 -05:00
parent 8490b49354
commit 1f533c6ec1
8 changed files with 204 additions and 55 deletions

View File

@@ -89,13 +89,13 @@ public abstract class SearchProvider<TItem, TCriteria, TSortField, TBaseQuery> :
.Take(options.PageSize)
.ToArrayAsync(cancellationToken);
Dictionary<int, TItem> items = await GetItems(ids);
Dictionary<int, TItem> items = await GetItems(options.Criteria, ids);
return [.. ids.Select(uniqueId => items[uniqueId])];
}
else
{
IQueryable<TItem> selectQuery = GetSelectQuery(orderedQuery);
IQueryable<TItem> selectQuery = GetSelectQuery(options.Criteria, orderedQuery);
return await selectQuery
.Skip((options.PageNumber - 1) * options.PageSize)
@@ -107,7 +107,7 @@ public abstract class SearchProvider<TItem, TCriteria, TSortField, TBaseQuery> :
protected abstract Expression<Func<TBaseQuery, object?>> GetSortExpression(TSortField field);
protected abstract IEnumerable<(Expression<Func<TBaseQuery, object>> Selector, SortDirection Dir)> GetDefaultSortChain();
protected abstract IQueryable<int> GetSelectIdQuery(IOrderedQueryable<TBaseQuery> query);
protected abstract IQueryable<TItem> GetSelectQuery(IOrderedQueryable<TBaseQuery> query);
protected abstract Task<Dictionary<int, TItem>> GetItems(int[] ids);
protected abstract IQueryable<TItem> GetSelectQuery(TCriteria criteria, IOrderedQueryable<TBaseQuery> query);
protected abstract Task<Dictionary<int, TItem>> GetItems(TCriteria criteria, int[] ids);
protected virtual Task PostLoadAsync(IList<TItem> items, CancellationToken cancellationToken) => Task.CompletedTask;
}