mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-17 18:12:04 +00:00
refactor(core): Decouple datastore from workflow execution context (#18963)
This commit is contained in:
@@ -60,6 +60,7 @@ export class DataStoreColumnRepository extends Repository<DataTableColumn> {
|
||||
dataTableId,
|
||||
});
|
||||
|
||||
// @ts-ignore Workaround for intermittent typecheck issue with _QueryDeepPartialEntity
|
||||
await em.insert(DataTableColumn, column);
|
||||
|
||||
const queryRunner = em.queryRunner;
|
||||
|
||||
@@ -28,6 +28,7 @@ export class DataStoreRepository extends Repository<DataTable> {
|
||||
let dataTableId: string | undefined;
|
||||
await this.manager.transaction(async (em) => {
|
||||
const dataStore = em.create(DataTable, { name, columns, projectId });
|
||||
// @ts-ignore Workaround for intermittent typecheck issue with _QueryDeepPartialEntity
|
||||
await em.insert(DataTable, dataStore);
|
||||
dataTableId = dataStore.id;
|
||||
|
||||
|
||||
@@ -2,7 +2,6 @@ import { Logger } from '@n8n/backend-common';
|
||||
import type { ModuleInterface } from '@n8n/decorators';
|
||||
import { BackendModule, OnShutdown } from '@n8n/decorators';
|
||||
import { Container } from '@n8n/di';
|
||||
import { BaseEntity } from '@n8n/typeorm';
|
||||
|
||||
const YELLOW = '\x1b[33m';
|
||||
const CLEAR = '\x1b[0m';
|
||||
@@ -38,6 +37,12 @@ export class DataStoreModule implements ModuleInterface {
|
||||
const { DataTable } = await import('./data-table.entity');
|
||||
const { DataTableColumn } = await import('./data-table-column.entity');
|
||||
|
||||
return [DataTable, DataTableColumn] as unknown as Array<new () => BaseEntity>;
|
||||
return [DataTable, DataTableColumn];
|
||||
}
|
||||
|
||||
async context() {
|
||||
const { DataStoreProxyService } = await import('./data-store-proxy.service');
|
||||
|
||||
return { dataStoreProxyProvider: Container.get(DataStoreProxyService) };
|
||||
}
|
||||
}
|
||||
|
||||
@@ -377,15 +377,7 @@ export async function getBase(
|
||||
|
||||
const eventService = Container.get(EventService);
|
||||
|
||||
const moduleRegistry = Container.get(ModuleRegistry);
|
||||
const dataStoreProxyProvider = moduleRegistry.isActive('data-table')
|
||||
? Container.get(
|
||||
(await import('@/modules/data-table/data-store-proxy.service')).DataStoreProxyService,
|
||||
)
|
||||
: undefined;
|
||||
|
||||
const additionalData: IWorkflowExecuteAdditionalData = {
|
||||
dataStoreProxyProvider,
|
||||
currentNodeExecutionIndex: 0,
|
||||
credentialsHelper: Container.get(CredentialsHelper),
|
||||
executeWorkflow,
|
||||
|
||||
@@ -7,7 +7,7 @@ declare module 'n8n-workflow' {
|
||||
interface IWorkflowExecuteAdditionalData {
|
||||
hooks?: ExecutionLifecycleHooks;
|
||||
externalSecretsProxy: ExternalSecretsProxy;
|
||||
dataStoreProxyProvider?: DataStoreProxyProvider;
|
||||
'data-table'?: { dataStoreProxyProvider: DataStoreProxyProvider };
|
||||
dataStoreProjectId?: string;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,8 +10,8 @@ export function getDataStoreHelperFunctions(
|
||||
workflow: Workflow,
|
||||
node: INode,
|
||||
): Partial<DataStoreProxyFunctions> {
|
||||
if (additionalData.dataStoreProxyProvider === undefined) return {};
|
||||
const dataStoreProxyProvider = additionalData.dataStoreProxyProvider;
|
||||
const dataStoreProxyProvider = additionalData['data-table']?.dataStoreProxyProvider;
|
||||
if (!dataStoreProxyProvider) return {};
|
||||
return {
|
||||
getDataStoreAggregateProxy: async () =>
|
||||
await dataStoreProxyProvider.getDataStoreAggregateProxy(
|
||||
|
||||
Reference in New Issue
Block a user