diff --git a/packages/backend/src/graphql/mutations/delete-flow.ts b/packages/backend/src/graphql/mutations/delete-flow.ts index 903646cf..59fca918 100644 --- a/packages/backend/src/graphql/mutations/delete-flow.ts +++ b/packages/backend/src/graphql/mutations/delete-flow.ts @@ -1,6 +1,8 @@ import Context from '../../types/express/context'; import Execution from '../../models/execution'; import ExecutionStep from '../../models/execution-step'; +import globalVariable from '../../helpers/global-variable'; +import logger from '../../helpers/logger'; type Params = { input: { @@ -22,6 +24,25 @@ const deleteFlow = async ( }) .throwIfNotFound(); + const triggerStep = await flow.getTriggerStep(); + const trigger = await triggerStep.getTriggerCommand(); + + if (trigger.type === 'webhook' && trigger?.unregisterHook) { + const $ = await globalVariable({ + flow, + connection: await triggerStep.$relatedQuery('connection'), + app: await triggerStep.getApp(), + step: triggerStep, + }); + + try { + await trigger.unregisterHook($); + } catch (error) { + // suppress error as the remote resource might have been already deleted + logger.debug(`Failed to unregister webhook for flow ${flow.id}: ${error.message}`); + } + } + const executionIds = ( await flow.$relatedQuery('executions').select('executions.id') ).map((execution: Execution) => execution.id);