diff --git a/src/notification/notification.controller.ts b/src/notification/notification.controller.ts index 1dec0b0..1e66408 100644 --- a/src/notification/notification.controller.ts +++ b/src/notification/notification.controller.ts @@ -2,6 +2,7 @@ import { FastifyRequest, FastifyReply } from "fastify"; import { PageQueryParams } from "../pagination"; import { createNotification, + deleteNotification, listNotifications, updateNotification, } from "./notification.service"; @@ -63,3 +64,20 @@ export async function updateNotificationHandler( return err; } } + +export async function deleteNotificationHandler( + req: FastifyRequest, + res: FastifyReply +) { + const { notifId } = req.params as { notifId: string }; + + try { + const deleteResult = await deleteNotification(notifId, req.user.tenantId); + if (deleteResult.deletedCount == 0) + return res.code(404).send({ error: "resource not found" }); + + return res.code(204).send(); + } catch (err) { + return err; + } +} diff --git a/src/notification/notification.route.ts b/src/notification/notification.route.ts index c9d2e3d..b32b578 100644 --- a/src/notification/notification.route.ts +++ b/src/notification/notification.route.ts @@ -2,6 +2,7 @@ import { FastifyInstance } from "fastify"; import { $notification } from "./notification.schema"; import { createNotificationHandler, + deleteNotificationHandler, listNotificationsHandler, updateNotificationHandler, } from "./notification.controller"; @@ -45,6 +46,24 @@ export async function notificationRoutes(fastify: FastifyInstance) { updateNotificationHandler ); + fastify.delete( + "/:notifId", + { + schema: { + params: { + type: "object", + properties: { + notifId: { type: "string" }, + }, + }, + }, + + config: { requiredClaims: ["notification:delete"] }, + preHandler: [fastify.authorize], + }, + deleteNotificationHandler + ); + fastify.get( "/fields/:field", { diff --git a/src/notification/notification.service.ts b/src/notification/notification.service.ts index 9ad5bdb..42d1a72 100644 --- a/src/notification/notification.service.ts +++ b/src/notification/notification.service.ts @@ -90,6 +90,12 @@ export async function listNotifications( }; } +export async function deleteNotification(notifId: string, tenantId: string) { + return await notificationModel.deleteOne({ + $and: [{ tenantId: tenantId }, { pid: notifId }], + }); +} + export async function getUniqueValuesNotification( field: string, tenenatId: string