feat: paging group / type product

This commit is contained in:
Methapon2001 2024-06-26 11:12:53 +07:00
parent 3211cbe8b7
commit e3dac5529f
2 changed files with 27 additions and 10 deletions

View file

@ -43,7 +43,12 @@ export class ProductGroup extends Controller {
} }
@Get() @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) => { const filterStatus = (val?: Status) => {
if (!val) return {}; if (!val) return {};
@ -58,10 +63,16 @@ export class ProductGroup extends Controller {
{ detail: { contains: query }, ...filterStatus(status) }, { detail: { contains: query }, ...filterStatus(status) },
], ],
} satisfies Prisma.ProductGroupWhereInput; } satisfies Prisma.ProductGroupWhereInput;
return prisma.productGroup.findMany({
orderBy: [{ statusOrder: "asc" }, { createdAt: "asc" }], const [result, total] = await prisma.$transaction([
where, prisma.productGroup.findMany({
}); orderBy: [{ statusOrder: "asc" }, { createdAt: "asc" }],
where,
}),
prisma.productGroup.count({ where }),
]);
return { result, page, pageSize, total };
} }
@Get("{groupId}") @Get("{groupId}")

View file

@ -49,6 +49,8 @@ export class ProductType extends Controller {
@Query() query: string = "", @Query() query: string = "",
@Query() productGroupId?: string, @Query() productGroupId?: string,
@Query() status?: Status, @Query() status?: Status,
@Query() page: number = 1,
@Query() pageSize: number = 30,
) { ) {
const filterStatus = (val?: Status) => { const filterStatus = (val?: Status) => {
if (!val) return {}; if (!val) return {};
@ -64,11 +66,15 @@ export class ProductType extends Controller {
{ detail: { contains: query }, ...filterStatus(status) }, { detail: { contains: query }, ...filterStatus(status) },
], ],
} satisfies Prisma.ProductTypeWhereInput; } satisfies Prisma.ProductTypeWhereInput;
const result = prisma.productType.findMany({ const [result, total] = await prisma.$transaction([
orderBy: [{ statusOrder: "asc" }, { createdAt: "asc" }], prisma.productType.findMany({
where, orderBy: [{ statusOrder: "asc" }, { createdAt: "asc" }],
}); where,
return result; }),
prisma.productType.count({ where }),
]);
return { result, page, pageSize, total };
} }
@Get("{typeId}") @Get("{typeId}")