From 4120335a6aece2ab7dc8cdbe60a8343cbf6c8eaa Mon Sep 17 00:00:00 2001 From: honzapatCZ Date: Mon, 13 Jan 2025 18:18:45 +0100 Subject: [PATCH] move projectors a bit around --- Utils/Extensions.cs | 23 +++++------------------ 1 file changed, 5 insertions(+), 18 deletions(-) diff --git a/Utils/Extensions.cs b/Utils/Extensions.cs index b24b7aa..6ecf2ab 100644 --- a/Utils/Extensions.cs +++ b/Utils/Extensions.cs @@ -17,27 +17,14 @@ public static class Extensions query = query.Take(pag.Count); return query; } - - public static async Task> ApplyPaginationRes(this IQueryable query, IServiceProvider providers, Pagination pag) where TResponseType : IAutomappedAttribute, new() + public static async Task> ApplyPaginationRes(this IQueryable query, IServiceProvider providers, Pagination pag, Expression>? projector = null) where TResponseType : IAutomappedAttribute, new() { var totalCount = await query.CountAsync(); query = query.Skip(pag.Offset); query = query.Take(pag.Count); - var projector = new TResponseType().GetProjectorFrom(providers); - return new PaginationResponse - { - TotalCount = totalCount, - Offset = pag.Offset, - Count = pag.Count, - Data = query.Select(projector).AsAsyncEnumerable() - }; - } - public static async Task> ApplyPaginationRes(this IQueryable query, IServiceProvider providers, Pagination pag, Expression> projector) where TResponseType : IAutomappedAttribute, new() - { - var totalCount = await query.CountAsync(); - query = query.Skip(pag.Offset); - query = query.Take(pag.Count); + if (projector == null) + projector = new TResponseType().GetProjectorFrom(providers); return new PaginationResponse { @@ -48,7 +35,7 @@ public static class Extensions }; } - public static async Task> ApplySearchPaginationRes(this IQueryable query, string? search, IServiceProvider providers, Pagination pag, List>> matchers) + public static async Task> ApplySearchPaginationRes(this IQueryable query, string? search, IServiceProvider providers, Pagination pag, List>> matchers, Expression>? projector = null) where TType : class where TResponseType : IAutomappedAttribute, new() where TEntityBinder : EntityBinder @@ -103,7 +90,7 @@ public static class Extensions } } - return await query.ApplyPaginationRes(providers, pag); + return await query.ApplyPaginationRes(providers, pag, projector); } [Projectable]