From 25dc4d7825666b6694ff05de77d1d9b69263a37f Mon Sep 17 00:00:00 2001 From: Omar Ajoue Date: Wed, 6 Sep 2023 12:23:40 +0200 Subject: [PATCH] feat: Add workflow history repository files (no-changelog) (#7071) --- packages/cli/src/Db.ts | 3 ++ packages/cli/src/Interfaces.ts | 4 +++ .../src/databases/entities/WorkflowHistory.ts | 28 +++++++++++++++++++ packages/cli/src/databases/entities/index.ts | 2 ++ .../cli/src/databases/repositories/index.ts | 1 + .../workflowHistory.repository.ts | 10 +++++++ .../workflowHistoryService.ee.ts | 7 +++++ 7 files changed, 55 insertions(+) create mode 100644 packages/cli/src/databases/entities/WorkflowHistory.ts create mode 100644 packages/cli/src/databases/repositories/workflowHistory.repository.ts create mode 100644 packages/cli/src/workflows/workflowHistory/workflowHistoryService.ee.ts diff --git a/packages/cli/src/Db.ts b/packages/cli/src/Db.ts index 1e10d496f4..596052667e 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 0000000000..c0eacaeba9 --- /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 34efac244a..9fd3c0b72c 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 21d78f6ceb..5fc7499caf 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 0000000000..02c0beaec2 --- /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 0000000000..7db534da93 --- /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) {} +}