Files
n8n-enterprise-unlocked/packages/cli/src/execution-lifecycle/to-save-settings.ts
T

47 lines
1.7 KiB
TypeScript

import { GlobalConfig } from '@n8n/config';
import { Container } from '@n8n/di';
import type { IWorkflowSettings } from 'n8n-workflow';
export type ExecutionSaveSettings = {
error: boolean | 'all' | 'none';
success: boolean | 'all' | 'none';
manual: boolean;
progress: boolean;
};
/**
* Return whether a workflow execution is configured to be saved or not:
*
* - `error`: Whether to save failed executions in production.
* - `success`: Whether to successful executions in production.
* - `manual`: Whether to save successful or failed manual executions.
* - `progress`: Whether to save execution progress, i.e. after each node's execution.
*/
export function toSaveSettings(
workflowSettings: IWorkflowSettings | null = {},
): ExecutionSaveSettings {
const DEFAULTS = {
ERROR: Container.get(GlobalConfig).executions.saveDataOnError,
SUCCESS: Container.get(GlobalConfig).executions.saveDataOnSuccess,
MANUAL: Container.get(GlobalConfig).executions.saveDataManualExecutions,
PROGRESS: Container.get(GlobalConfig).executions.saveExecutionProgress,
};
const {
saveDataErrorExecution = DEFAULTS.ERROR,
saveDataSuccessExecution = DEFAULTS.SUCCESS,
saveManualExecutions = DEFAULTS.MANUAL,
saveExecutionProgress = DEFAULTS.PROGRESS,
} = workflowSettings ?? {};
return {
error: saveDataErrorExecution === 'DEFAULT' ? DEFAULTS.ERROR : saveDataErrorExecution === 'all',
success:
saveDataSuccessExecution === 'DEFAULT'
? DEFAULTS.SUCCESS
: saveDataSuccessExecution === 'all',
manual: saveManualExecutions === 'DEFAULT' ? DEFAULTS.MANUAL : saveManualExecutions,
progress: saveExecutionProgress === 'DEFAULT' ? DEFAULTS.PROGRESS : saveExecutionProgress,
};
}