diff --git a/packages/cli/src/Db.ts b/packages/cli/src/Db.ts index 1e10d496f..596052667 100644 --- a/packages/cli/src/Db.ts +++ b/packages/cli/src/Db.ts @@ -166,6 +166,9 @@ export async function init(testConnectionOptions?: ConnectionOptions): Promise> { AuthIdentity: AuthIdentityRepository; diff --git a/packages/cli/src/databases/entities/WorkflowHistory.ts b/packages/cli/src/databases/entities/WorkflowHistory.ts new file mode 100644 index 000000000..c0eacaeba --- /dev/null +++ b/packages/cli/src/databases/entities/WorkflowHistory.ts @@ -0,0 +1,28 @@ +import { Column, Entity, ManyToOne, PrimaryColumn } from 'typeorm'; +import { jsonColumnType } from './AbstractEntity'; +import { IConnections } from 'n8n-workflow'; +import type { INode } from 'n8n-workflow'; +import { WorkflowEntity } from './WorkflowEntity'; + +@Entity() +export class WorkflowHistory { + @PrimaryColumn() + versionId: string; + + @Column() + workflowId: string; + + @Column(jsonColumnType) + nodes: INode[]; + + @Column(jsonColumnType) + connections: IConnections; + + @Column() + authors: string; + + @ManyToOne('WorkflowEntity', { + onDelete: 'CASCADE', + }) + workflow: WorkflowEntity; +} diff --git a/packages/cli/src/databases/entities/index.ts b/packages/cli/src/databases/entities/index.ts index 34efac244..9fd3c0b72 100644 --- a/packages/cli/src/databases/entities/index.ts +++ b/packages/cli/src/databases/entities/index.ts @@ -19,6 +19,7 @@ import { WorkflowTagMapping } from './WorkflowTagMapping'; import { WorkflowStatistics } from './WorkflowStatistics'; import { ExecutionMetadata } from './ExecutionMetadata'; import { ExecutionData } from './ExecutionData'; +import { WorkflowHistory } from './WorkflowHistory'; export const entities = { AuthIdentity, @@ -41,4 +42,5 @@ export const entities = { WorkflowStatistics, ExecutionMetadata, ExecutionData, + WorkflowHistory, }; diff --git a/packages/cli/src/databases/repositories/index.ts b/packages/cli/src/databases/repositories/index.ts index 21d78f6ce..5fc7499ca 100644 --- a/packages/cli/src/databases/repositories/index.ts +++ b/packages/cli/src/databases/repositories/index.ts @@ -15,6 +15,7 @@ export { TagRepository } from './tag.repository'; export { UserRepository } from './user.repository'; export { VariablesRepository } from './variables.repository'; export { WebhookRepository } from './webhook.repository'; +export { WorkflowHistoryRepository } from './workflowHistory.repository'; export { WorkflowRepository } from './workflow.repository'; export { WorkflowStatisticsRepository } from './workflowStatistics.repository'; export { WorkflowTagMappingRepository } from './workflowTagMapping.repository'; diff --git a/packages/cli/src/databases/repositories/workflowHistory.repository.ts b/packages/cli/src/databases/repositories/workflowHistory.repository.ts new file mode 100644 index 000000000..02c0beaec --- /dev/null +++ b/packages/cli/src/databases/repositories/workflowHistory.repository.ts @@ -0,0 +1,10 @@ +import { Service } from 'typedi'; +import { DataSource, Repository } from 'typeorm'; +import { WorkflowHistory } from '../entities/WorkflowHistory'; + +@Service() +export class WorkflowHistoryRepository extends Repository { + constructor(dataSource: DataSource) { + super(WorkflowHistory, dataSource.manager); + } +} diff --git a/packages/cli/src/workflows/workflowHistory/workflowHistoryService.ee.ts b/packages/cli/src/workflows/workflowHistory/workflowHistoryService.ee.ts new file mode 100644 index 000000000..7db534da9 --- /dev/null +++ b/packages/cli/src/workflows/workflowHistory/workflowHistoryService.ee.ts @@ -0,0 +1,7 @@ +import { WorkflowHistoryRepository } from '@db/repositories/workflowHistory.repository'; +import { Service } from 'typedi'; + +@Service() +export class WorkflowHistoryService { + constructor(private readonly workflowHistoryRepository: WorkflowHistoryRepository) {} +}