import prisma from "@calcom/prisma"; import type { TrpcSessionUser } from "../../../trpc"; import type { TDeleteInputSchema } from "./delete.schema"; type DeleteOptions = { ctx: { user: NonNullable; }; input: TDeleteInputSchema; }; export const deleteHandler = async ({ ctx, input }: DeleteOptions) => { const { id } = input; const apiKeyToDelete = await prisma.apiKey.findFirst({ where: { id, }, }); await prisma.user.update({ where: { id: ctx.user.id, }, data: { apiKeys: { delete: { id, }, }, }, }); //remove all existing zapier webhooks, as we always have only one zapier API key and the running zaps won't work any more if this key is deleted if (apiKeyToDelete && apiKeyToDelete.appId === "zapier") { await prisma.webhook.deleteMany({ where: { userId: ctx.user.id, appId: "zapier", }, }); } return { id, }; };