UNPKG

@directus/api

Version:

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

42 lines (40 loc) 1.52 kB
import { ItemsService } from "../../services/items.js"; import { getAccountabilityForRole } from "../../utils/get-accountability-for-role.js"; import { optionToObject, toArray } from "@directus/utils"; import { defineOperationApi } from "@directus/extensions"; //#region src/operations/item-create/index.ts var item_create_default = defineOperationApi({ id: "item-create", handler: async ({ collection, payload, emitEvents, permissions }, { accountability, database, getSchema }) => { const schema = await getSchema({ database }); let customAccountability; if (!permissions || permissions === "$trigger") customAccountability = accountability; else if (permissions === "$full") customAccountability = await getAccountabilityForRole("system", { database, schema, accountability }); else if (permissions === "$public") customAccountability = await getAccountabilityForRole(null, { database, schema, accountability }); else customAccountability = await getAccountabilityForRole(permissions, { database, schema, accountability }); const itemsService = new ItemsService(collection, { schema: await getSchema({ database }), accountability: customAccountability, knex: database }); const payloadObject = optionToObject(payload) ?? null; let result; if (!payloadObject) result = null; else result = await itemsService.createMany(toArray(payloadObject), { emitEvents: !!emitEvents }); return result; } }); //#endregion export { item_create_default as default };