From 9afe8731b1cf54c985ba15b28ab92d9f37f6c8c5 Mon Sep 17 00:00:00 2001 From: pit Date: Tue, 3 Oct 2023 10:09:40 +0100 Subject: [PATCH] chore: added delete function --- .../server-only/user/delete-user-and-data.ts | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 packages/lib/server-only/user/delete-user-and-data.ts diff --git a/packages/lib/server-only/user/delete-user-and-data.ts b/packages/lib/server-only/user/delete-user-and-data.ts new file mode 100644 index 000000000..3cfac13f6 --- /dev/null +++ b/packages/lib/server-only/user/delete-user-and-data.ts @@ -0,0 +1,41 @@ +import { prisma } from '@documenso/prisma'; + +export const deleteUserAndItsData = async (name: string) => { + const user = await prisma.user.findFirst({ + where: { + name: { + contains: name, + }, + }, + }); + + if (!user) { + throw new Error(`User with name ${name} not found`); + } + + const document = await prisma.document.findMany({ + where: { + userId: user.id, + }, + select: { + documentData: { + select: { + data: true, + }, + }, + }, + }); + + return prisma.$transaction([ + prisma.user.delete({ + where: { + id: user.id, + }, + }), + prisma.documentData.deleteMany({ + where: { + data: document[0]?.documentData.data, + }, + }), + ]); +};