From e3dac5529f2eff95a7d3cf7d20be36aa5b931389 Mon Sep 17 00:00:00 2001 From: Methapon2001 <61303214+Methapon2001@users.noreply.github.com> Date: Wed, 26 Jun 2024 11:12:53 +0700 Subject: [PATCH] feat: paging group / type product --- src/controllers/product/group-controller.ts | 21 ++++++++++++++++----- src/controllers/product/type-controller.ts | 16 +++++++++++----- 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/src/controllers/product/group-controller.ts b/src/controllers/product/group-controller.ts index c57e767..fb5b568 100644 --- a/src/controllers/product/group-controller.ts +++ b/src/controllers/product/group-controller.ts @@ -43,7 +43,12 @@ export class ProductGroup extends Controller { } @Get() - async getProductGroup(@Query() query: string = "", @Query() status?: Status) { + async getProductGroup( + @Query() query: string = "", + @Query() status?: Status, + @Query() page: number = 1, + @Query() pageSize: number = 30, + ) { const filterStatus = (val?: Status) => { if (!val) return {}; @@ -58,10 +63,16 @@ export class ProductGroup extends Controller { { detail: { contains: query }, ...filterStatus(status) }, ], } satisfies Prisma.ProductGroupWhereInput; - return prisma.productGroup.findMany({ - orderBy: [{ statusOrder: "asc" }, { createdAt: "asc" }], - where, - }); + + const [result, total] = await prisma.$transaction([ + prisma.productGroup.findMany({ + orderBy: [{ statusOrder: "asc" }, { createdAt: "asc" }], + where, + }), + prisma.productGroup.count({ where }), + ]); + + return { result, page, pageSize, total }; } @Get("{groupId}") diff --git a/src/controllers/product/type-controller.ts b/src/controllers/product/type-controller.ts index b88d668..4d5bc9c 100644 --- a/src/controllers/product/type-controller.ts +++ b/src/controllers/product/type-controller.ts @@ -49,6 +49,8 @@ export class ProductType extends Controller { @Query() query: string = "", @Query() productGroupId?: string, @Query() status?: Status, + @Query() page: number = 1, + @Query() pageSize: number = 30, ) { const filterStatus = (val?: Status) => { if (!val) return {}; @@ -64,11 +66,15 @@ export class ProductType extends Controller { { detail: { contains: query }, ...filterStatus(status) }, ], } satisfies Prisma.ProductTypeWhereInput; - const result = prisma.productType.findMany({ - orderBy: [{ statusOrder: "asc" }, { createdAt: "asc" }], - where, - }); - return result; + const [result, total] = await prisma.$transaction([ + prisma.productType.findMany({ + orderBy: [{ statusOrder: "asc" }, { createdAt: "asc" }], + where, + }), + prisma.productType.count({ where }), + ]); + + return { result, page, pageSize, total }; } @Get("{typeId}")