refactor(core): Use an IoC container to manage singleton classes [Part-1] (no-changelog) (#5509)
* add typedi * convert ActiveWorkflowRunner into an injectable service * convert ExternalHooks into an injectable service * convert InternalHooks into an injectable service * convert LoadNodesAndCredentials into an injectable service * convert NodeTypes and CredentialTypes into an injectable service * convert ActiveExecutions into an injectable service * convert WaitTracker into an injectable service * convert Push into an injectable service * convert ActiveWebhooks and TestWebhooks into an injectable services * handle circular references, and log errors when a circular dependency is found
This commit is contained in:
committed by
GitHub
parent
aca94bb995
commit
52f740b9e8
@@ -15,7 +15,7 @@ import type {
|
||||
import { deepCopy, LoggerProxy, jsonParse, Workflow } from 'n8n-workflow';
|
||||
import type { FindOperator, FindOptionsWhere } from 'typeorm';
|
||||
import { In, IsNull, LessThanOrEqual, Not, Raw } from 'typeorm';
|
||||
import * as ActiveExecutions from '@/ActiveExecutions';
|
||||
import { ActiveExecutions } from '@/ActiveExecutions';
|
||||
import config from '@/config';
|
||||
import type { User } from '@db/entities/User';
|
||||
import type { ExecutionEntity } from '@db/entities/ExecutionEntity';
|
||||
@@ -34,6 +34,7 @@ import { WorkflowRunner } from '@/WorkflowRunner';
|
||||
import * as Db from '@/Db';
|
||||
import * as GenericHelpers from '@/GenericHelpers';
|
||||
import { parse } from 'flatted';
|
||||
import { Container } from 'typedi';
|
||||
|
||||
interface IGetExecutionsQueryFilter {
|
||||
id?: FindOperator<string>;
|
||||
@@ -202,7 +203,7 @@ export class ExecutionsService {
|
||||
|
||||
// We may have manual executions even with queue so we must account for these.
|
||||
executingWorkflowIds.push(
|
||||
...ActiveExecutions.getInstance()
|
||||
...Container.get(ActiveExecutions)
|
||||
.getActiveExecutions()
|
||||
.map(({ id }) => id),
|
||||
);
|
||||
@@ -446,7 +447,7 @@ export class ExecutionsService {
|
||||
}
|
||||
|
||||
data.workflowData = workflowData;
|
||||
const nodeTypes = NodeTypes();
|
||||
const nodeTypes = Container.get(NodeTypes);
|
||||
const workflowInstance = new Workflow({
|
||||
id: workflowData.id as string,
|
||||
name: workflowData.name,
|
||||
@@ -481,7 +482,7 @@ export class ExecutionsService {
|
||||
const workflowRunner = new WorkflowRunner();
|
||||
const retriedExecutionId = await workflowRunner.run(data);
|
||||
|
||||
const executionData = await ActiveExecutions.getInstance().getPostExecutePromise(
|
||||
const executionData = await Container.get(ActiveExecutions).getPostExecutePromise(
|
||||
retriedExecutionId,
|
||||
);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user