From 4bec401a459913521e60785c6e9e5ba65f9d3b19 Mon Sep 17 00:00:00 2001 From: "Md. Sayeed Rahman" Date: Fri, 17 Jan 2025 18:51:40 +0600 Subject: [PATCH 1/2] chore: pass cancellation token in paginatedlistasync --- src/Application/Common/Mappings/MappingExtensions.cs | 2 +- .../GetTodoItemsWithPagination/GetTodoItemsWithPagination.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Application/Common/Mappings/MappingExtensions.cs b/src/Application/Common/Mappings/MappingExtensions.cs index 4f0fa6ff3..30f407418 100644 --- a/src/Application/Common/Mappings/MappingExtensions.cs +++ b/src/Application/Common/Mappings/MappingExtensions.cs @@ -4,7 +4,7 @@ namespace CleanArchitecture.Application.Common.Mappings; public static class MappingExtensions { - public static Task> PaginatedListAsync(this IQueryable queryable, int pageNumber, int pageSize) where TDestination : class + public static Task> PaginatedListAsync(this IQueryable queryable, int pageNumber, int pageSize, CancellationToken cancellationToken = default) where TDestination : class => PaginatedList.CreateAsync(queryable.AsNoTracking(), pageNumber, pageSize); public static Task> ProjectToListAsync(this IQueryable queryable, IConfigurationProvider configuration) where TDestination : class diff --git a/src/Application/TodoItems/Queries/GetTodoItemsWithPagination/GetTodoItemsWithPagination.cs b/src/Application/TodoItems/Queries/GetTodoItemsWithPagination/GetTodoItemsWithPagination.cs index b58c8ed91..68b7da8b2 100644 --- a/src/Application/TodoItems/Queries/GetTodoItemsWithPagination/GetTodoItemsWithPagination.cs +++ b/src/Application/TodoItems/Queries/GetTodoItemsWithPagination/GetTodoItemsWithPagination.cs @@ -28,6 +28,6 @@ public async Task> Handle(GetTodoItemsWithPagina .Where(x => x.ListId == request.ListId) .OrderBy(x => x.Title) .ProjectTo(_mapper.ConfigurationProvider) - .PaginatedListAsync(request.PageNumber, request.PageSize); + .PaginatedListAsync(request.PageNumber, request.PageSize, cancellationToken); } } From e260b287136f8d8a986b184a3838392e7ec476c6 Mon Sep 17 00:00:00 2001 From: "Md. Sayeed Rahman" Date: Fri, 17 Jan 2025 19:00:00 +0600 Subject: [PATCH 2/2] chore: pass cancellation token in createasync --- src/Application/Common/Mappings/MappingExtensions.cs | 6 +++--- src/Application/Common/Models/PaginatedList.cs | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/Application/Common/Mappings/MappingExtensions.cs b/src/Application/Common/Mappings/MappingExtensions.cs index 30f407418..783e3e090 100644 --- a/src/Application/Common/Mappings/MappingExtensions.cs +++ b/src/Application/Common/Mappings/MappingExtensions.cs @@ -5,8 +5,8 @@ namespace CleanArchitecture.Application.Common.Mappings; public static class MappingExtensions { public static Task> PaginatedListAsync(this IQueryable queryable, int pageNumber, int pageSize, CancellationToken cancellationToken = default) where TDestination : class - => PaginatedList.CreateAsync(queryable.AsNoTracking(), pageNumber, pageSize); + => PaginatedList.CreateAsync(queryable.AsNoTracking(), pageNumber, pageSize, cancellationToken); - public static Task> ProjectToListAsync(this IQueryable queryable, IConfigurationProvider configuration) where TDestination : class - => queryable.ProjectTo(configuration).AsNoTracking().ToListAsync(); + public static Task> ProjectToListAsync(this IQueryable queryable, IConfigurationProvider configuration, CancellationToken cancellationToken = default) where TDestination : class + => queryable.ProjectTo(configuration).AsNoTracking().ToListAsync(cancellationToken); } diff --git a/src/Application/Common/Models/PaginatedList.cs b/src/Application/Common/Models/PaginatedList.cs index b65a564df..3a17d6848 100644 --- a/src/Application/Common/Models/PaginatedList.cs +++ b/src/Application/Common/Models/PaginatedList.cs @@ -19,10 +19,10 @@ public PaginatedList(IReadOnlyCollection items, int count, int pageNumber, in public bool HasNextPage => PageNumber < TotalPages; - public static async Task> CreateAsync(IQueryable source, int pageNumber, int pageSize) + public static async Task> CreateAsync(IQueryable source, int pageNumber, int pageSize, CancellationToken cancellationToken = default) { - var count = await source.CountAsync(); - var items = await source.Skip((pageNumber - 1) * pageSize).Take(pageSize).ToListAsync(); + var count = await source.CountAsync(cancellationToken); + var items = await source.Skip((pageNumber - 1) * pageSize).Take(pageSize).ToListAsync(cancellationToken); return new PaginatedList(items, count, pageNumber, pageSize); }