Generator Changes at 9/27/2025 8:46:36 AM

This commit is contained in:
generator
2025-09-27 08:46:36 +03:30
parent fd82e3edcf
commit fd8614f72e
261 changed files with 6333 additions and 0 deletions
@@ -0,0 +1,30 @@
namespace CMSMicroservice.Application.Common.Extensions;
public static class MetaDataExtensions
{
public static async Task<MetaData> GetMetaData<T>(this IQueryable<T> source, PaginationState? paginationState,
CancellationToken cancellationToken)
{
if (paginationState is null)
return new MetaData
{
TotalCount = await source.CountAsync(cancellationToken)
};
var pageSize = paginationState.PageSize > 0 ? paginationState.PageSize : PaginationDefaults.PageSize;
var pageNumber = paginationState.PageNumber > 0 ? paginationState.PageNumber : PaginationDefaults.PageNumber;
var totalCount = await source.CountAsync(cancellationToken);
var totalPageCount = (int)Math.Ceiling(totalCount / (double)pageSize);
var metaData = new MetaData
{
CurrentPage = pageNumber,
HasNext = pageNumber < totalPageCount,
HasPrevious = pageNumber > 1,
PageSize = pageSize,
TotalCount = totalCount,
TotalPage = totalPageCount
};
return metaData;
}
}
@@ -0,0 +1,25 @@
namespace CMSMicroservice.Application.Common.Extensions;
public static class PaginationStateExtensions
{
public static IQueryable<TSource> PaginatedListAsync<TSource>(this IQueryable<TSource> source,
PaginationState? paginationState)
{
if (paginationState is null)
return source;
var pageSize = paginationState.PageSize > 0 ? paginationState.PageSize : PaginationDefaults.PageSize;
var pageNumber = paginationState.PageNumber > 0 ? paginationState.PageNumber : PaginationDefaults.PageNumber;
var paginationSkip = pageSize * (pageNumber - 1);
return source.Skip(paginationSkip).Take(pageSize);
}
}
public static class PaginationDefaults
{
public const int PageSize = 10;
public const int PageNumber = 1;
public const int Skip = 0;
public const int Take = PageSize;
}
@@ -0,0 +1,23 @@
using System.Linq.Dynamic.Core;
using CMSMicroservice.Domain.Common;
namespace CMSMicroservice.Application.Common.Extensions;
public static class SortByExtensions
{
public static IQueryable<TSource> ApplyOrder<TSource>(this IQueryable<TSource> source,
string? sortBy) where TSource : BaseAuditableEntity
{
// default sort approach
if (sortBy is null or "")
{
source = source.OrderByDescending(p => p.Created);
return source;
}
// sort using dynamic linq
source = source.OrderBy(sortBy);
return source;
}
}