n8n
Version:
n8n Workflow Automation Tool
66 lines • 2.79 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.saveExecutionProgress = saveExecutionProgress;
const typedi_1 = require("typedi");
const n8n_workflow_1 = require("n8n-workflow");
const Logger_1 = require("../Logger");
const execution_repository_1 = require("../databases/repositories/execution.repository");
const toSaveSettings_1 = require("../executionLifecycleHooks/toSaveSettings");
async function saveExecutionProgress(workflowData, executionId, nodeName, data, executionData, pushRef) {
const saveSettings = (0, toSaveSettings_1.toSaveSettings)(workflowData.settings);
if (!saveSettings.progress)
return;
const logger = typedi_1.Container.get(Logger_1.Logger);
try {
logger.debug(`Save execution progress to database for execution ID ${executionId} `, {
executionId,
nodeName,
});
const fullExecutionData = await typedi_1.Container.get(execution_repository_1.ExecutionRepository).findSingleExecution(executionId, {
includeData: true,
unflattenData: true,
});
if (!fullExecutionData) {
return;
}
if (fullExecutionData.finished) {
return;
}
if (fullExecutionData.data === undefined) {
fullExecutionData.data = {
startData: {},
resultData: {
runData: {},
},
executionData: {
contextData: {},
metadata: {},
nodeExecutionStack: [],
waitingExecution: {},
waitingExecutionSource: {},
},
};
}
if (Array.isArray(fullExecutionData.data.resultData.runData[nodeName])) {
fullExecutionData.data.resultData.runData[nodeName].push(data);
}
else {
fullExecutionData.data.resultData.runData[nodeName] = [data];
}
fullExecutionData.data.executionData = executionData.executionData;
fullExecutionData.data.resultData.lastNodeExecuted = nodeName;
fullExecutionData.status = 'running';
await typedi_1.Container.get(execution_repository_1.ExecutionRepository).updateExistingExecution(executionId, fullExecutionData);
}
catch (e) {
const error = e instanceof Error ? e : new Error(`${e}`);
n8n_workflow_1.ErrorReporterProxy.error(error);
logger.error(`Failed saving execution progress to database for execution ID ${executionId} (hookFunctionsPreExecute, nodeExecuteAfter)`, {
...error,
executionId,
pushRef,
workflowId: workflowData.id,
});
}
}
//# sourceMappingURL=saveExecutionProgress.js.map
;