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]