From ad86c4dbf4590ffd9c8debb3489234356f6696b7 Mon Sep 17 00:00:00 2001 From: Piyush Gupta Date: Sun, 6 Aug 2023 15:17:08 +0530 Subject: [PATCH] fix: independent queries -> Txn --- .../[teamId]/transfer-ownership/index.ts | 57 ++++++++++--------- 1 file changed, 29 insertions(+), 28 deletions(-) diff --git a/apps/web/pages/api/v1/teams/[teamId]/transfer-ownership/index.ts b/apps/web/pages/api/v1/teams/[teamId]/transfer-ownership/index.ts index 32a64acb74..d4afcecebc 100644 --- a/apps/web/pages/api/v1/teams/[teamId]/transfer-ownership/index.ts +++ b/apps/web/pages/api/v1/teams/[teamId]/transfer-ownership/index.ts @@ -50,34 +50,35 @@ export default async function handle(req: NextApiRequest, res: NextApiResponse) return res.status(403).json({ message: "The new owner must be a member of the team" }); } - const updatedOwnerMembership = await prisma.membership.update({ - where: { - userId_teamId: { - teamId, - userId: newOwnerId, - }, - }, - data: { - role: "owner", - }, - }); + try { + await prisma.$transaction([ + prisma.membership.update({ + where: { + userId_teamId: { + teamId, + userId: currentUser.id, + }, + }, + data: { + role: "admin", + }, + }), + prisma.membership.update({ + where: { + userId_teamId: { + teamId, + userId: newOwnerId, + }, + }, + data: { + role: "owner", + }, + }), + ]); + } catch (error) { + return res.status(500).json({ message: "Something went wrong" }); + } - const updatedAdminMembership = await prisma.membership.update({ - where: { - userId_teamId: { - teamId, - userId: currentUser.id, - }, - }, - data: { - role: "admin", - }, - }); - - return res.json({ - message: "Ownership transferred successfully", - updatedOwnerMembership, - updatedAdminMembership, - }); + return res.json({ message: "Ownership transferred successfully" }); } }