UNPKG

@directus/api

Version:

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

39 lines (37 loc) 1.51 kB
import { getFlowManager } from "../../flows.js"; import { optionToObject } from "@directus/utils"; import { omit } from "lodash-es"; import { defineOperationApi } from "@directus/extensions"; //#region src/operations/trigger/index.ts var trigger_default = defineOperationApi({ id: "trigger", handler: async ({ flow, payload, iterationMode, batchSize }, context) => { const flowManager = getFlowManager(); const payloadObject = optionToObject(payload) ?? null; if (Array.isArray(payloadObject)) { if (iterationMode === "serial") { const result = []; for (const payload$1 of payloadObject) result.push(await flowManager.runOperationFlow(flow, payload$1, omit(context, "data"))); return result; } if (iterationMode === "batch") { const size = batchSize ?? 10; const result = []; for (let i = 0; i < payloadObject.length; i += size) { const batch = payloadObject.slice(i, i + size); const batchResults = await Promise.all(batch.map((payload$1) => { return flowManager.runOperationFlow(flow, payload$1, omit(context, "data")); })); result.push(...batchResults); } return result; } if (iterationMode === "parallel" || !iterationMode) return await Promise.all(payloadObject.map((payload$1) => { return flowManager.runOperationFlow(flow, payload$1, omit(context, "data")); })); } return await flowManager.runOperationFlow(flow, payloadObject, omit(context, "data")); } }); //#endregion export { trigger_default as default };