UNPKG

@directus/api

Version:

Directus is a real-time API and App dashboard for managing SQL database content

47 lines (45 loc) 1.75 kB
import { NotificationsService } from "../../services/notifications.js"; import { getAccountabilityForRole } from "../../utils/get-accountability-for-role.js"; import { optionToString, toArray } from "@directus/utils"; import { defineOperationApi } from "@directus/extensions"; //#region src/operations/notification/index.ts var notification_default = defineOperationApi({ id: "notification", handler: async ({ recipient, subject, message, permissions, collection, item }, { accountability, database, getSchema }) => { const schema = await getSchema({ database }); let customAccountability; if (!permissions || permissions === "$trigger") customAccountability = accountability; else if (permissions === "$full") customAccountability = null; else if (permissions === "$public") customAccountability = await getAccountabilityForRole(null, { database, schema, accountability }); else customAccountability = await getAccountabilityForRole(permissions, { database, schema, accountability }); const notificationsService = new NotificationsService({ schema: await getSchema({ database }), accountability: customAccountability, knex: database }); const messageString = message ? optionToString(message) : null; const collectionString = collection ? optionToString(collection) : null; const itemString = item ? optionToString(item) : null; const payload = toArray(recipient).map((userId) => { return { recipient: userId, sender: customAccountability?.user ?? null, subject, message: messageString, collection: collectionString, item: itemString }; }); return await notificationsService.createMany(payload); } }); //#endregion export { notification_default as default };