diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/utils/workspace-query-runner-graphql-api-exception-handler.util.ts b/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/utils/workspace-query-runner-graphql-api-exception-handler.util.ts index 4b25b71d6c..d5a0ffed7b 100644 --- a/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/utils/workspace-query-runner-graphql-api-exception-handler.util.ts +++ b/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/utils/workspace-query-runner-graphql-api-exception-handler.util.ts @@ -20,6 +20,8 @@ import { PermissionsException } from 'src/engine/metadata-modules/permissions/pe import { permissionGraphqlApiExceptionHandler } from 'src/engine/metadata-modules/permissions/utils/permission-graphql-api-exception-handler.util'; import { TwentyORMException } from 'src/engine/twenty-orm/exceptions/twenty-orm.exception'; import { twentyORMGraphqlApiExceptionHandler } from 'src/engine/twenty-orm/utils/twenty-orm-graphql-api-exception-handler.util'; +import { WorkflowQueryValidationException } from 'src/modules/workflow/common/exceptions/workflow-query-validation.exception'; +import { workflowQueryValidationGraphqlApiExceptionHandler } from 'src/modules/workflow/common/utils/workflow-query-validation-graphql-api-exception-handler.util'; interface QueryFailedErrorWithCode extends QueryFailedError { code: string; @@ -49,6 +51,8 @@ export const workspaceQueryRunnerGraphqlApiExceptionHandler = ( return throttlerToGraphqlApiExceptionHandler(error); case error instanceof GraphqlDirectExecutionException: return graphqlDirectExecutionToGraphqlApiExceptionHandler(error); + case error instanceof WorkflowQueryValidationException: + return workflowQueryValidationGraphqlApiExceptionHandler(error); default: throw error; } diff --git a/packages/twenty-server/src/modules/workflow/common/utils/workflow-query-validation-graphql-api-exception-handler.util.ts b/packages/twenty-server/src/modules/workflow/common/utils/workflow-query-validation-graphql-api-exception-handler.util.ts new file mode 100644 index 0000000000..df57364c04 --- /dev/null +++ b/packages/twenty-server/src/modules/workflow/common/utils/workflow-query-validation-graphql-api-exception-handler.util.ts @@ -0,0 +1,19 @@ +import { assertUnreachable } from 'twenty-shared/utils'; + +import { ForbiddenError } from 'src/engine/core-modules/graphql/utils/graphql-errors.util'; +import { + type WorkflowQueryValidationException, + WorkflowQueryValidationExceptionCode, +} from 'src/modules/workflow/common/exceptions/workflow-query-validation.exception'; + +export const workflowQueryValidationGraphqlApiExceptionHandler = ( + exception: WorkflowQueryValidationException, +) => { + switch (exception.code) { + case WorkflowQueryValidationExceptionCode.FORBIDDEN: + throw new ForbiddenError(exception); + default: { + assertUnreachable(exception.code); + } + } +}; diff --git a/packages/twenty-server/src/modules/workflow/workflow-executor/workflow-actions/iterator/iterator.workflow-action.ts b/packages/twenty-server/src/modules/workflow/workflow-executor/workflow-actions/iterator/iterator.workflow-action.ts index 8a49c86d95..07d17f0b45 100644 --- a/packages/twenty-server/src/modules/workflow/workflow-executor/workflow-actions/iterator/iterator.workflow-action.ts +++ b/packages/twenty-server/src/modules/workflow/workflow-executor/workflow-actions/iterator/iterator.workflow-action.ts @@ -55,7 +55,7 @@ export class IteratorWorkflowAction implements WorkflowActionInterface { if (!Array.isArray(parsedItems)) { throw new WorkflowStepExecutorException( 'Iterator input items must be an array', - WorkflowStepExecutorExceptionCode.INTERNAL_ERROR, + WorkflowStepExecutorExceptionCode.INVALID_STEP_INPUT, ); }