From 9b07973c01ce7185a3e362f1354d4067d63e9ea6 Mon Sep 17 00:00:00 2001 From: Atridad Lahiji Date: Sun, 13 Aug 2023 23:20:05 -0600 Subject: [PATCH] Finished webhook handler for user.deleted --- src/pages/api/webhooks/onUserDelete.ts | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/src/pages/api/webhooks/onUserDelete.ts b/src/pages/api/webhooks/onUserDelete.ts index cfc1bde..3288931 100644 --- a/src/pages/api/webhooks/onUserDelete.ts +++ b/src/pages/api/webhooks/onUserDelete.ts @@ -1,4 +1,7 @@ +import { eq } from "drizzle-orm"; import type { NextApiRequest, NextApiResponse } from "next"; +import { db } from "~/server/db"; +import { logs, rooms, votes } from "~/server/schema"; import { validateApiKey } from "~/server/unkey"; export default async function handler( @@ -20,7 +23,24 @@ export default async function handler( res.status(403).json({ error: "UNAUTHORIZED" }); } - console.log(req.body); + const requestBody = req.body as { + data: { + deleted: string; + id: string; + object: string; + }; + object: string; + type: string; + }; - res.status(200).json({ result: "AUTHORIZED" }); + const deletedRoom = await db + .delete(rooms) + .where(eq(rooms.userId, requestBody.data.id)); + + if (deletedRoom.rowsAffected > 0) { + await db.delete(logs).where(eq(logs.userId, requestBody.data.id)); + await db.delete(votes).where(eq(votes.userId, requestBody.data.id)); + } + + res.status(200).json({ result: "USER DELETED" }); }