fix: update service

This commit is contained in:
Methapon2001 2024-06-21 14:14:10 +07:00
parent dc21fc434d
commit 3b045ecf50

View file

@ -247,26 +247,40 @@ export class ServiceController extends Controller {
if (!(await prisma.service.findUnique({ where: { id: serviceId } }))) { if (!(await prisma.service.findUnique({ where: { id: serviceId } }))) {
throw new HttpError(HttpStatus.NOT_FOUND, "Service cannot be found.", "serviceNotFound"); throw new HttpError(HttpStatus.NOT_FOUND, "Service cannot be found.", "serviceNotFound");
} }
const { work, ...payload } = body; const { work, ...payload } = body;
const record = await prisma.$transaction(async (tx) => {
const record = await prisma.service.update({ const workList = await Promise.all(
data: { (work || []).map(async (w, wIdx) =>
...payload, tx.work.create({
work: { data: {
deleteMany: {}, name: w.name,
createMany: { order: wIdx + 1,
data: attributes: w.attributes,
work?.map((v, i) => ({ productOnWork: {
order: i + 1, createMany: {
...v, data: w.productId.map((p, pIdx) => ({
})) || [], productId: p,
order: pIdx + 1,
})),
},
},
},
}),
),
);
return await prisma.service.update({
data: {
...payload,
work: {
deleteMany: {},
connect: workList.map((v) => ({ id: v.id })),
}, },
updateBy: req.user.name,
}, },
updateBy: req.user.name, where: { id: serviceId },
}, });
where: { id: serviceId },
}); });
return Object.assign(record, { return Object.assign(record, {
imageUrl: await presignedGetObjectIfExist( imageUrl: await presignedGetObjectIfExist(
MINIO_BUCKET, MINIO_BUCKET,