From 63ffe1a99dcabd95ba9f56c30910ebb11ac261f7 Mon Sep 17 00:00:00 2001 From: citlalinda Date: Thu, 16 Jan 2025 10:16:27 +0800 Subject: [PATCH] feat: add validateConfig to trigger (#6040) * feat: add validateConfig to trigger * refactor: validateConfig * fix: validate config --- .../src/server/ActionTrigger.ts | 16 ++++++++++++++ .../src/server/triggers/CollectionTrigger.ts | 10 +++++++++ .../server/triggers/ScheduleTrigger/index.ts | 22 +++++++++++++++++++ .../src/server/triggers/index.ts | 1 + 4 files changed, 49 insertions(+) diff --git a/packages/plugins/@nocobase/plugin-workflow-action-trigger/src/server/ActionTrigger.ts b/packages/plugins/@nocobase/plugin-workflow-action-trigger/src/server/ActionTrigger.ts index 14bcbbb94c..c509a127fa 100644 --- a/packages/plugins/@nocobase/plugin-workflow-action-trigger/src/server/ActionTrigger.ts +++ b/packages/plugins/@nocobase/plugin-workflow-action-trigger/src/server/ActionTrigger.ts @@ -232,4 +232,20 @@ export default class extends Trigger { options, ); } + + validateConfig(values) { + if (!values.data) { + return { + data: 'Data property is required', + }; + } + + if (!values.userId) { + return { + userId: 'UserId property is required', + }; + } + + return null; + } } diff --git a/packages/plugins/@nocobase/plugin-workflow/src/server/triggers/CollectionTrigger.ts b/packages/plugins/@nocobase/plugin-workflow/src/server/triggers/CollectionTrigger.ts index d10aeda67d..1985966079 100644 --- a/packages/plugins/@nocobase/plugin-workflow/src/server/triggers/CollectionTrigger.ts +++ b/packages/plugins/@nocobase/plugin-workflow/src/server/triggers/CollectionTrigger.ts @@ -235,4 +235,14 @@ export default class CollectionTrigger extends Trigger { transaction: this.workflow.useDataSourceTransaction(dataSourceName, transaction), }); } + + validateConfig(values) { + if (!values.data) { + return { + data: 'Data property is required', + }; + } + + return null; + } } diff --git a/packages/plugins/@nocobase/plugin-workflow/src/server/triggers/ScheduleTrigger/index.ts b/packages/plugins/@nocobase/plugin-workflow/src/server/triggers/ScheduleTrigger/index.ts index f0da376bd1..2798c8f494 100644 --- a/packages/plugins/@nocobase/plugin-workflow/src/server/triggers/ScheduleTrigger/index.ts +++ b/packages/plugins/@nocobase/plugin-workflow/src/server/triggers/ScheduleTrigger/index.ts @@ -68,4 +68,26 @@ export default class ScheduleTrigger extends Trigger { // }); // return !existed.length; // } + + validateConfig(values) { + if (!values.mode) { + return { + mode: 'Mode property is required', + }; + } + + if (!values.startsOn) { + return { + startsOn: 'StartsOn property is required', + }; + } + + if (values.mode === SCHEDULE_MODE.DATE_FIELD && !values.collection) { + return { + collection: 'Collection property is required', + }; + } + + return null; + } } diff --git a/packages/plugins/@nocobase/plugin-workflow/src/server/triggers/index.ts b/packages/plugins/@nocobase/plugin-workflow/src/server/triggers/index.ts index fec0cab04f..901fc7a054 100644 --- a/packages/plugins/@nocobase/plugin-workflow/src/server/triggers/index.ts +++ b/packages/plugins/@nocobase/plugin-workflow/src/server/triggers/index.ts @@ -20,6 +20,7 @@ export abstract class Trigger { return true; } duplicateConfig?(workflow: WorkflowModel, options: Transactionable): object | Promise; + validateConfig?(values: any): null | void | { [key: string]: string }; sync?: boolean; execute?( workflow: WorkflowModel,