From a811c17bde755c077aceca37a17823bdb08f84c3 Mon Sep 17 00:00:00 2001 From: Methapon Metanipat Date: Thu, 7 Nov 2024 10:45:12 +0700 Subject: [PATCH] feat: add document list to product data --- prisma/schema.prisma | 10 ++++++++++ src/controllers/04-product-controller.ts | 19 ++++++++++++++++++- 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 878ed2d..6b2db61 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -1036,6 +1036,14 @@ model ProductGroup { product Product[] } +model ProductDocument { + id String @id @default(cuid()) + name String + + product Product? @relation(fields: [productId], references: [id]) + productId String? +} + model Product { id String @id @default(cuid()) @@ -1059,6 +1067,8 @@ model Product { remark String? selectedImage String? + document ProductDocument[] + productGroup ProductGroup @relation(fields: [productGroupId], references: [id], onDelete: Cascade) productGroupId String diff --git a/src/controllers/04-product-controller.ts b/src/controllers/04-product-controller.ts index fb80973..0d5e2ad 100644 --- a/src/controllers/04-product-controller.ts +++ b/src/controllers/04-product-controller.ts @@ -63,6 +63,7 @@ type ProductCreate = { shared?: boolean; productGroupId: string; remark?: string; + document?: string[]; }; type ProductUpdate = { @@ -80,6 +81,7 @@ type ProductUpdate = { selectedImage?: string; shared?: boolean; productGroupId?: string; + document?: string[]; }; @Route("api/v1/product") @@ -270,6 +272,11 @@ export class ProductController extends Controller { }, data: { ...body, + document: body.document + ? { + createMany: { data: body.document.map((v) => ({ name: v })) }, + } + : undefined, statusOrder: +(body.status === "INACTIVE"), code: `${body.code.toLocaleUpperCase()}${last.value.toString().padStart(3, "0")}`, createdByUserId: req.user.sub, @@ -343,7 +350,17 @@ export class ProductController extends Controller { createdBy: true, updatedBy: true, }, - data: { ...body, statusOrder: +(body.status === "INACTIVE"), updatedByUserId: req.user.sub }, + data: { + ...body, + document: body.document + ? { + deleteMany: {}, + createMany: { data: body.document.map((v) => ({ name: v })) }, + } + : undefined, + statusOrder: +(body.status === "INACTIVE"), + updatedByUserId: req.user.sub, + }, where: { id: productId }, });