From 6d471eced2d8f546f15c684ed61983fafec2bfb0 Mon Sep 17 00:00:00 2001 From: Stephan <57194608+stephan418@users.noreply.github.com> Date: Thu, 28 Apr 2022 12:42:33 +0200 Subject: [PATCH] Add function for deleting events --- src/Controllers/event.controller.ts | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/src/Controllers/event.controller.ts b/src/Controllers/event.controller.ts index db5efcf..31a799f 100644 --- a/src/Controllers/event.controller.ts +++ b/src/Controllers/event.controller.ts @@ -1,7 +1,8 @@ import { Prisma } from "@prisma/client"; +import { PrismaClientKnownRequestError } from "@prisma/client/runtime"; import { Request, Response } from "express"; import prisma from "../lib/prisma"; -import { DataType, generateInvalidBodyError } from "./common"; +import { createInsufficientPermissionsError, DataType, generateError, generateInvalidBodyError } from "./common"; export const getAllEvents = async (req: Request, res: Response) => { const events = await prisma.event.findMany({ @@ -118,3 +119,28 @@ export const addEvent = async (req: Request, res: Response) => { }, }); }; + +interface DeleteEventQueryParams { + pid: string; +} + +// requires: auth(ELEVATED) +export const deleteEvent = (req: Request, res: Response) => { + if (req.auth?.permission_level !== "ELEVATED") { + res.status(403).json(createInsufficientPermissionsError()); + } + + const { pid } = req.params; + + try { + prisma.event.delete({ where: { pid } }); + + return res.status(204).end(); + } catch (e) { + if (e instanceof PrismaClientKnownRequestError && e.code === "P2025") { + return res.status(404).json(generateError(`The organisation with the ID ${pid} could not be found`)); + } + + throw e; + } +};