From de29f64aaf36c7f8a659a77e1a3082b09886a802 Mon Sep 17 00:00:00 2001 From: Methapon2001 <61303214+Methapon2001@users.noreply.github.com> Date: Tue, 24 Dec 2024 16:04:54 +0700 Subject: [PATCH] refactor: wrap in transaction --- src/controllers/07-task-controller.ts | 57 +++++++++++++-------------- 1 file changed, 27 insertions(+), 30 deletions(-) diff --git a/src/controllers/07-task-controller.ts b/src/controllers/07-task-controller.ts index 3119a8d..57df7ea 100644 --- a/src/controllers/07-task-controller.ts +++ b/src/controllers/07-task-controller.ts @@ -512,39 +512,37 @@ export class TaskActionController extends Controller { if (!record) throw notFoundError("Task Order"); - await prisma.$transaction([ - prisma.taskOrder.update({ - where: { id: taskOrderId }, - data: { taskOrderStatus: TaskOrderStatus.Complete }, - }), - prisma.requestWorkStepStatus.updateMany({ + await prisma.$transaction(async (tx) => { + await Promise.all([ + tx.taskOrder.update({ + where: { id: taskOrderId }, + data: { taskOrderStatus: TaskOrderStatus.Complete }, + }), + tx.requestWorkStepStatus.updateMany({ + where: { + task: { + some: { taskOrderId, taskStatus: TaskStatus.Redo }, + }, + }, + data: { workStatus: RequestWorkStatus.Ready }, + }), + tx.task.updateMany({ + where: { + taskOrderId: taskOrderId, + taskStatus: TaskStatus.Validate, + requestWorkStep: { responsibleUserId: submitUserId }, + }, + data: { taskStatus: TaskStatus.Complete }, + }), + ]); + await tx.requestWorkStepStatus.updateMany({ where: { task: { - some: { taskOrderId, taskStatus: TaskStatus.Redo }, + some: { taskOrderId, taskStatus: TaskStatus.Complete }, }, }, - data: { workStatus: RequestWorkStatus.Ready }, - }), - prisma.task.updateMany({ - where: { - taskOrderId: taskOrderId, - taskStatus: TaskStatus.Validate, - requestWorkStep: { responsibleUserId: submitUserId }, - }, - data: { taskStatus: TaskStatus.Complete }, - }), - ]); - - await prisma.requestWorkStepStatus.updateMany({ - where: { - task: { - some: { taskOrderId, taskStatus: TaskStatus.Complete }, - }, - }, - data: { workStatus: RequestWorkStatus.Completed }, - }); - - await prisma.$transaction(async (tx) => { + data: { workStatus: RequestWorkStatus.Completed }, + }); const requestList = await tx.requestData.findMany({ include: { requestWork: { @@ -578,7 +576,6 @@ export class TaskActionController extends Controller { const completed: string[] = []; requestList.forEach((item) => { - console.log(item); const completeCheck = item.requestWork.every((work) => { const stepCount = work.productService.work?.productOnWork.find(