diff --git a/packages/backend/src/graphql/mutations/update-step.ts b/packages/backend/src/graphql/mutations/update-step.ts index 3a393fd9..d65ffecc 100644 --- a/packages/backend/src/graphql/mutations/update-step.ts +++ b/packages/backend/src/graphql/mutations/update-step.ts @@ -1,4 +1,5 @@ import { IJSONObject } from '@automatisch/types'; +import App from '../../models/app'; import Step from '../../models/step'; import Context from '../../types/express/context'; @@ -42,6 +43,10 @@ const updateStep = async ( } } + if (step.isAction) { + await App.checkAppAndAction(input.appKey, input.key); + } + step = await Step.query() .patchAndFetchById(input.id, { key: input.key, diff --git a/packages/backend/src/models/app.ts b/packages/backend/src/models/app.ts index 998566a1..f5cb4b36 100644 --- a/packages/backend/src/models/app.ts +++ b/packages/backend/src/models/app.ts @@ -36,6 +36,16 @@ class App { return appInfoConverter(rawAppData); } + + static async checkAppAndAction(appKey: string, actionKey: string): Promise { + const app = await this.findOneByKey(appKey); + + const hasAction = app.actions?.find(action => action.key === actionKey); + + if (!hasAction) { + throw new Error(`${app.name} does not have an action with the "${actionKey}" key!`); + } + } } export default App;