From 1de95ead0da9be55fdf8903aff51ba515fd7d186 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Iv=C3=A1n=20Ovejero?= Date: Wed, 30 Apr 2025 10:31:28 +0200 Subject: [PATCH] refactor(core): Move leaf entities to `@n8n/db` (#15010) --- .../db/src}/entities/event-destinations.ts | 3 ++- packages/@n8n/db/src/entities/index.ts | 19 +++++++++++++++ .../db/src}/entities/installed-nodes.ts | 0 .../db/src}/entities/installed-packages.ts | 2 +- .../db/src}/entities/invalid-auth-token.ts | 3 ++- .../db/src}/entities/processed-data.ts | 5 ++-- .../db/src}/entities/settings.ts | 0 .../db/src}/entities/variables.ts | 3 ++- .../db/src}/entities/webhook-entity.ts | 0 packages/@n8n/db/src/index.ts | 12 ++++++++++ .../db/src}/utils/transformers.ts | 0 .../commands/__tests__/community-node.test.ts | 2 +- packages/cli/src/commands/community-node.ts | 3 +-- .../community-packages.controller.ts | 2 +- .../src/databases/entities/execution-data.ts | 3 +-- .../databases/entities/execution-entity.ts | 3 +-- packages/cli/src/databases/entities/index.ts | 19 ++++++++------- packages/cli/src/databases/entities/user.ts | 3 +-- .../src/databases/entities/workflow-entity.ts | 3 +-- .../event-destinations.repository.ts | 3 +-- .../installed-nodes.repository.ts | 3 +-- .../installed-packages.repository.ts | 2 +- .../invalid-auth-token.repository.ts | 3 +-- .../repositories/processed-data.repository.ts | 3 +-- .../repositories/settings.repository.ts | 3 +-- .../repositories/variables.repository.ts | 3 +-- .../repositories/webhook.repository.ts | 3 +-- .../repositories/workflow.repository.ts | 3 +-- .../src/deduplication/deduplication-helper.ts | 23 ++++++++++--------- .../__tests__/source-control.service.test.ts | 2 +- .../source-control-import.service.ee.ts | 2 +- .../source-control.service.ee.ts | 2 +- .../variables/variables.service.ee.ts | 2 +- .../message-event-bus-destination-from-db.ts | 3 +-- .../ldap.ee/__tests__/ldap.service.test.ts | 2 +- packages/cli/src/requests.ts | 2 +- .../community-packages.service.test.ts | 4 ++-- .../services/community-packages.service.ts | 2 +- packages/cli/src/services/hooks.service.ts | 2 +- .../cli/src/sso.ee/saml/saml.service.ee.ts | 2 +- packages/cli/src/types-db.ts | 12 ---------- .../__tests__/webhook.service.test.ts | 2 +- packages/cli/src/webhooks/webhook.service.ts | 2 +- .../active-workflow-manager.test.ts | 2 +- .../community-packages.api.test.ts | 4 ++-- .../test/integration/security-audit/utils.ts | 4 ++-- .../shared/utils/community-nodes.ts | 2 +- .../cli/test/integration/variables.test.ts | 2 +- packages/workflow/src/Interfaces.ts | 10 ++++++++ 49 files changed, 110 insertions(+), 89 deletions(-) rename packages/{cli/src/databases => @n8n/db/src}/entities/event-destinations.ts (83%) create mode 100644 packages/@n8n/db/src/entities/index.ts rename packages/{cli/src/databases => @n8n/db/src}/entities/installed-nodes.ts (100%) rename packages/{cli/src/databases => @n8n/db/src}/entities/installed-packages.ts (90%) rename packages/{cli/src/databases => @n8n/db/src}/entities/invalid-auth-token.ts (76%) rename packages/{cli/src/databases => @n8n/db/src}/entities/processed-data.ts (84%) rename packages/{cli/src/databases => @n8n/db/src}/entities/settings.ts (100%) rename packages/{cli/src/databases => @n8n/db/src}/entities/variables.ts (81%) rename packages/{cli/src/databases => @n8n/db/src}/entities/webhook-entity.ts (100%) rename packages/{cli/src/databases => @n8n/db/src}/utils/transformers.ts (100%) diff --git a/packages/cli/src/databases/entities/event-destinations.ts b/packages/@n8n/db/src/entities/event-destinations.ts similarity index 83% rename from packages/cli/src/databases/entities/event-destinations.ts rename to packages/@n8n/db/src/entities/event-destinations.ts index e451b1dbbd..42e1162e27 100644 --- a/packages/cli/src/databases/entities/event-destinations.ts +++ b/packages/@n8n/db/src/entities/event-destinations.ts @@ -1,7 +1,8 @@ -import { JsonColumn, WithTimestamps } from '@n8n/db'; import { Entity, PrimaryColumn } from '@n8n/typeorm'; import { MessageEventBusDestinationOptions } from 'n8n-workflow'; +import { JsonColumn, WithTimestamps } from './abstract-entity'; + @Entity({ name: 'event_destinations' }) export class EventDestinations extends WithTimestamps { @PrimaryColumn('uuid') diff --git a/packages/@n8n/db/src/entities/index.ts b/packages/@n8n/db/src/entities/index.ts new file mode 100644 index 0000000000..de4d04be7e --- /dev/null +++ b/packages/@n8n/db/src/entities/index.ts @@ -0,0 +1,19 @@ +import { EventDestinations } from './event-destinations'; +import { InstalledNodes } from './installed-nodes'; +import { InstalledPackages } from './installed-packages'; +import { InvalidAuthToken } from './invalid-auth-token'; +import { ProcessedData } from './processed-data'; +import { Settings } from './settings'; +import { Variables } from './variables'; +import { WebhookEntity } from './webhook-entity'; + +export { + EventDestinations, + InstalledNodes, + InstalledPackages, + InvalidAuthToken, + ProcessedData, + Settings, + Variables, + WebhookEntity, +}; diff --git a/packages/cli/src/databases/entities/installed-nodes.ts b/packages/@n8n/db/src/entities/installed-nodes.ts similarity index 100% rename from packages/cli/src/databases/entities/installed-nodes.ts rename to packages/@n8n/db/src/entities/installed-nodes.ts diff --git a/packages/cli/src/databases/entities/installed-packages.ts b/packages/@n8n/db/src/entities/installed-packages.ts similarity index 90% rename from packages/cli/src/databases/entities/installed-packages.ts rename to packages/@n8n/db/src/entities/installed-packages.ts index 34038bf745..830c3c40e2 100644 --- a/packages/cli/src/databases/entities/installed-packages.ts +++ b/packages/@n8n/db/src/entities/installed-packages.ts @@ -1,6 +1,6 @@ -import { WithTimestamps } from '@n8n/db'; import { Column, Entity, JoinColumn, OneToMany, PrimaryColumn } from '@n8n/typeorm'; +import { WithTimestamps } from './abstract-entity'; import type { InstalledNodes } from './installed-nodes'; @Entity() diff --git a/packages/cli/src/databases/entities/invalid-auth-token.ts b/packages/@n8n/db/src/entities/invalid-auth-token.ts similarity index 76% rename from packages/cli/src/databases/entities/invalid-auth-token.ts rename to packages/@n8n/db/src/entities/invalid-auth-token.ts index 4ebe156f02..95eb9605bb 100644 --- a/packages/cli/src/databases/entities/invalid-auth-token.ts +++ b/packages/@n8n/db/src/entities/invalid-auth-token.ts @@ -1,6 +1,7 @@ -import { DateTimeColumn } from '@n8n/db'; import { Entity, PrimaryColumn } from '@n8n/typeorm'; +import { DateTimeColumn } from './abstract-entity'; + @Entity() export class InvalidAuthToken { @PrimaryColumn() diff --git a/packages/cli/src/databases/entities/processed-data.ts b/packages/@n8n/db/src/entities/processed-data.ts similarity index 84% rename from packages/cli/src/databases/entities/processed-data.ts rename to packages/@n8n/db/src/entities/processed-data.ts index b96be916d6..65355894d4 100644 --- a/packages/cli/src/databases/entities/processed-data.ts +++ b/packages/@n8n/db/src/entities/processed-data.ts @@ -1,8 +1,7 @@ -import { JsonColumn, WithTimestamps } from '@n8n/db'; import { Entity, PrimaryColumn } from '@n8n/typeorm'; +import type { IProcessedDataEntries, IProcessedDataLatest } from 'n8n-workflow'; -import type { IProcessedDataEntries, IProcessedDataLatest } from '@/types-db'; - +import { JsonColumn, WithTimestamps } from './abstract-entity'; import { objectRetriever } from '../utils/transformers'; @Entity() diff --git a/packages/cli/src/databases/entities/settings.ts b/packages/@n8n/db/src/entities/settings.ts similarity index 100% rename from packages/cli/src/databases/entities/settings.ts rename to packages/@n8n/db/src/entities/settings.ts diff --git a/packages/cli/src/databases/entities/variables.ts b/packages/@n8n/db/src/entities/variables.ts similarity index 81% rename from packages/cli/src/databases/entities/variables.ts rename to packages/@n8n/db/src/entities/variables.ts index 4205cdf6b2..d6bf10431e 100644 --- a/packages/cli/src/databases/entities/variables.ts +++ b/packages/@n8n/db/src/entities/variables.ts @@ -1,6 +1,7 @@ -import { WithStringId } from '@n8n/db'; import { Column, Entity } from '@n8n/typeorm'; +import { WithStringId } from './abstract-entity'; + @Entity() export class Variables extends WithStringId { @Column('text') diff --git a/packages/cli/src/databases/entities/webhook-entity.ts b/packages/@n8n/db/src/entities/webhook-entity.ts similarity index 100% rename from packages/cli/src/databases/entities/webhook-entity.ts rename to packages/@n8n/db/src/entities/webhook-entity.ts diff --git a/packages/@n8n/db/src/index.ts b/packages/@n8n/db/src/index.ts index 475df35aec..3378270ec7 100644 --- a/packages/@n8n/db/src/index.ts +++ b/packages/@n8n/db/src/index.ts @@ -12,3 +12,15 @@ export { export { generateNanoId } from './utils/generators'; export { isStringArray } from './utils/is-string-array'; export { separate } from './utils/separate'; +export { idStringifier, lowerCaser, objectRetriever, sqlite } from './utils/transformers'; + +export { + EventDestinations, + InstalledNodes, + InstalledPackages, + InvalidAuthToken, + ProcessedData, + Settings, + Variables, + WebhookEntity, +} from './entities'; diff --git a/packages/cli/src/databases/utils/transformers.ts b/packages/@n8n/db/src/utils/transformers.ts similarity index 100% rename from packages/cli/src/databases/utils/transformers.ts rename to packages/@n8n/db/src/utils/transformers.ts diff --git a/packages/cli/src/commands/__tests__/community-node.test.ts b/packages/cli/src/commands/__tests__/community-node.test.ts index 35d999393a..31d461a851 100644 --- a/packages/cli/src/commands/__tests__/community-node.test.ts +++ b/packages/cli/src/commands/__tests__/community-node.test.ts @@ -1,8 +1,8 @@ +import { type InstalledNodes } from '@n8n/db'; import { type Config } from '@oclif/core'; import { mock } from 'jest-mock-extended'; import { type CredentialsEntity } from '@/databases/entities/credentials-entity'; -import { type InstalledNodes } from '@/databases/entities/installed-nodes'; import { type User } from '@/databases/entities/user'; import { CommunityNode } from '../community-node'; diff --git a/packages/cli/src/commands/community-node.ts b/packages/cli/src/commands/community-node.ts index 1c76d5515d..d628535914 100644 --- a/packages/cli/src/commands/community-node.ts +++ b/packages/cli/src/commands/community-node.ts @@ -1,9 +1,8 @@ +import { type InstalledNodes, type InstalledPackages } from '@n8n/db'; import { Container } from '@n8n/di'; import { Flags } from '@oclif/core'; import { CredentialsService } from '@/credentials/credentials.service'; -import { type InstalledNodes } from '@/databases/entities/installed-nodes'; -import { type InstalledPackages } from '@/databases/entities/installed-packages'; import { type User } from '@/databases/entities/user'; import { CredentialsRepository } from '@/databases/repositories/credentials.repository'; import { InstalledNodesRepository } from '@/databases/repositories/installed-nodes.repository'; diff --git a/packages/cli/src/controllers/community-packages.controller.ts b/packages/cli/src/controllers/community-packages.controller.ts index 3753214aed..12f448c6db 100644 --- a/packages/cli/src/controllers/community-packages.controller.ts +++ b/packages/cli/src/controllers/community-packages.controller.ts @@ -1,3 +1,4 @@ +import type { InstalledPackages } from '@n8n/db'; import { Delete, Get, Patch, Post, RestController, GlobalScope } from '@n8n/decorators'; import { @@ -5,7 +6,6 @@ import { STARTER_TEMPLATE_NAME, UNKNOWN_FAILURE_REASON, } from '@/constants'; -import type { InstalledPackages } from '@/databases/entities/installed-packages'; import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { InternalServerError } from '@/errors/response-errors/internal-server.error'; import { EventService } from '@/events/event.service'; diff --git a/packages/cli/src/databases/entities/execution-data.ts b/packages/cli/src/databases/entities/execution-data.ts index 8f1286596e..136d70bd4d 100644 --- a/packages/cli/src/databases/entities/execution-data.ts +++ b/packages/cli/src/databases/entities/execution-data.ts @@ -1,9 +1,8 @@ -import { JsonColumn } from '@n8n/db'; +import { JsonColumn, idStringifier } from '@n8n/db'; import { Column, Entity, ManyToOne, PrimaryColumn } from '@n8n/typeorm'; import { IWorkflowBase } from 'n8n-workflow'; import { ExecutionEntity } from './execution-entity'; -import { idStringifier } from '../utils/transformers'; @Entity() export class ExecutionData { diff --git a/packages/cli/src/databases/entities/execution-entity.ts b/packages/cli/src/databases/entities/execution-entity.ts index f9576a1726..1e6401a6c2 100644 --- a/packages/cli/src/databases/entities/execution-entity.ts +++ b/packages/cli/src/databases/entities/execution-entity.ts @@ -1,4 +1,4 @@ -import { DateTimeColumn, datetimeColumnType } from '@n8n/db'; +import { DateTimeColumn, datetimeColumnType, idStringifier } from '@n8n/db'; import { Column, Entity, @@ -19,7 +19,6 @@ import type { ExecutionAnnotation } from '@/databases/entities/execution-annotat import type { ExecutionData } from './execution-data'; import type { ExecutionMetadata } from './execution-metadata'; import { WorkflowEntity } from './workflow-entity'; -import { idStringifier } from '../utils/transformers'; @Entity() @Index(['workflowId', 'id']) diff --git a/packages/cli/src/databases/entities/index.ts b/packages/cli/src/databases/entities/index.ts index aab1044abf..03fd329471 100644 --- a/packages/cli/src/databases/entities/index.ts +++ b/packages/cli/src/databases/entities/index.ts @@ -1,3 +1,14 @@ +import { + EventDestinations, + InstalledNodes, + InstalledPackages, + InvalidAuthToken, + ProcessedData, + Settings, + Variables, + WebhookEntity, +} from '@n8n/db'; + import { AnnotationTagEntity } from './annotation-tag-entity.ee'; import { AnnotationTagMapping } from './annotation-tag-mapping.ee'; import { ApiKey } from './api-key'; @@ -5,20 +16,14 @@ import { AuthIdentity } from './auth-identity'; import { AuthProviderSyncHistory } from './auth-provider-sync-history'; import { AuthUser } from './auth-user'; import { CredentialsEntity } from './credentials-entity'; -import { EventDestinations } from './event-destinations'; import { ExecutionAnnotation } from './execution-annotation.ee'; import { ExecutionData } from './execution-data'; import { ExecutionEntity } from './execution-entity'; import { ExecutionMetadata } from './execution-metadata'; import { Folder } from './folder'; import { FolderTagMapping } from './folder-tag-mapping'; -import { InstalledNodes } from './installed-nodes'; -import { InstalledPackages } from './installed-packages'; -import { InvalidAuthToken } from './invalid-auth-token'; -import { ProcessedData } from './processed-data'; import { Project } from './project'; import { ProjectRelation } from './project-relation'; -import { Settings } from './settings'; import { SharedCredentials } from './shared-credentials'; import { SharedWorkflow } from './shared-workflow'; import { TagEntity } from './tag-entity'; @@ -27,8 +32,6 @@ import { TestDefinition } from './test-definition.ee'; import { TestMetric } from './test-metric.ee'; import { TestRun } from './test-run.ee'; import { User } from './user'; -import { Variables } from './variables'; -import { WebhookEntity } from './webhook-entity'; import { WorkflowEntity } from './workflow-entity'; import { WorkflowHistory } from './workflow-history'; import { WorkflowStatistics } from './workflow-statistics'; diff --git a/packages/cli/src/databases/entities/user.ts b/packages/cli/src/databases/entities/user.ts index dfd877c254..f80cc670c8 100644 --- a/packages/cli/src/databases/entities/user.ts +++ b/packages/cli/src/databases/entities/user.ts @@ -1,4 +1,4 @@ -import { JsonColumn, WithTimestamps } from '@n8n/db'; +import { JsonColumn, WithTimestamps, objectRetriever, lowerCaser } from '@n8n/db'; import { hasScope, type ScopeOptions, type Scope, GlobalRole } from '@n8n/permissions'; import { AfterLoad, @@ -28,7 +28,6 @@ import type { AuthIdentity } from './auth-identity'; import type { ProjectRelation } from './project-relation'; import type { SharedCredentials } from './shared-credentials'; import type { SharedWorkflow } from './shared-workflow'; -import { objectRetriever, lowerCaser } from '../utils/transformers'; const STATIC_SCOPE_MAP: Record = { 'global:owner': GLOBAL_OWNER_SCOPES, diff --git a/packages/cli/src/databases/entities/workflow-entity.ts b/packages/cli/src/databases/entities/workflow-entity.ts index cb4568d9dd..a331014e7e 100644 --- a/packages/cli/src/databases/entities/workflow-entity.ts +++ b/packages/cli/src/databases/entities/workflow-entity.ts @@ -1,4 +1,4 @@ -import { JsonColumn, WithTimestampsAndStringId, dbType } from '@n8n/db'; +import { JsonColumn, WithTimestampsAndStringId, dbType, objectRetriever, sqlite } from '@n8n/db'; import { Column, Entity, @@ -20,7 +20,6 @@ import type { SharedWorkflow } from './shared-workflow'; import type { TagEntity } from './tag-entity'; import type { WorkflowStatistics } from './workflow-statistics'; import type { WorkflowTagMapping } from './workflow-tag-mapping'; -import { objectRetriever, sqlite } from '../utils/transformers'; @Entity() export class WorkflowEntity extends WithTimestampsAndStringId implements IWorkflowDb { diff --git a/packages/cli/src/databases/repositories/event-destinations.repository.ts b/packages/cli/src/databases/repositories/event-destinations.repository.ts index 2af7bca8bb..9a67ae9eed 100644 --- a/packages/cli/src/databases/repositories/event-destinations.repository.ts +++ b/packages/cli/src/databases/repositories/event-destinations.repository.ts @@ -1,8 +1,7 @@ +import { EventDestinations } from '@n8n/db'; import { Service } from '@n8n/di'; import { DataSource, Repository } from '@n8n/typeorm'; -import { EventDestinations } from '../entities/event-destinations'; - @Service() export class EventDestinationsRepository extends Repository { constructor(dataSource: DataSource) { diff --git a/packages/cli/src/databases/repositories/installed-nodes.repository.ts b/packages/cli/src/databases/repositories/installed-nodes.repository.ts index 68fc564ca3..b9ace43155 100644 --- a/packages/cli/src/databases/repositories/installed-nodes.repository.ts +++ b/packages/cli/src/databases/repositories/installed-nodes.repository.ts @@ -1,8 +1,7 @@ +import { InstalledNodes } from '@n8n/db'; import { Service } from '@n8n/di'; import { DataSource, Repository } from '@n8n/typeorm'; -import { InstalledNodes } from '../entities/installed-nodes'; - @Service() export class InstalledNodesRepository extends Repository { constructor(dataSource: DataSource) { diff --git a/packages/cli/src/databases/repositories/installed-packages.repository.ts b/packages/cli/src/databases/repositories/installed-packages.repository.ts index 873880dc90..3489708ab8 100644 --- a/packages/cli/src/databases/repositories/installed-packages.repository.ts +++ b/packages/cli/src/databases/repositories/installed-packages.repository.ts @@ -1,9 +1,9 @@ +import { InstalledPackages } from '@n8n/db'; import { Service } from '@n8n/di'; import { DataSource, Repository } from '@n8n/typeorm'; import type { PackageDirectoryLoader } from 'n8n-core'; import { InstalledNodesRepository } from './installed-nodes.repository'; -import { InstalledPackages } from '../entities/installed-packages'; @Service() export class InstalledPackagesRepository extends Repository { diff --git a/packages/cli/src/databases/repositories/invalid-auth-token.repository.ts b/packages/cli/src/databases/repositories/invalid-auth-token.repository.ts index b9c8e0a4d9..a1bdeadd39 100644 --- a/packages/cli/src/databases/repositories/invalid-auth-token.repository.ts +++ b/packages/cli/src/databases/repositories/invalid-auth-token.repository.ts @@ -1,8 +1,7 @@ +import { InvalidAuthToken } from '@n8n/db'; import { Service } from '@n8n/di'; import { DataSource, Repository } from '@n8n/typeorm'; -import { InvalidAuthToken } from '../entities/invalid-auth-token'; - @Service() export class InvalidAuthTokenRepository extends Repository { constructor(dataSource: DataSource) { diff --git a/packages/cli/src/databases/repositories/processed-data.repository.ts b/packages/cli/src/databases/repositories/processed-data.repository.ts index 0063cdf9db..a8bcd2fa0e 100644 --- a/packages/cli/src/databases/repositories/processed-data.repository.ts +++ b/packages/cli/src/databases/repositories/processed-data.repository.ts @@ -1,8 +1,7 @@ +import { ProcessedData } from '@n8n/db'; import { Service } from '@n8n/di'; import { DataSource, Repository } from '@n8n/typeorm'; -import { ProcessedData } from '../entities/processed-data'; - @Service() export class ProcessedDataRepository extends Repository { constructor(dataSource: DataSource) { diff --git a/packages/cli/src/databases/repositories/settings.repository.ts b/packages/cli/src/databases/repositories/settings.repository.ts index 6e28b71c1b..7c8a8ef29d 100644 --- a/packages/cli/src/databases/repositories/settings.repository.ts +++ b/packages/cli/src/databases/repositories/settings.repository.ts @@ -1,3 +1,4 @@ +import { Settings } from '@n8n/db'; import { Service } from '@n8n/di'; import { DataSource, Repository } from '@n8n/typeorm'; import { ErrorReporter } from 'n8n-core'; @@ -5,8 +6,6 @@ import { ErrorReporter } from 'n8n-core'; import config from '@/config'; import { EXTERNAL_SECRETS_DB_KEY } from '@/external-secrets.ee/constants'; -import { Settings } from '../entities/settings'; - @Service() export class SettingsRepository extends Repository { constructor( diff --git a/packages/cli/src/databases/repositories/variables.repository.ts b/packages/cli/src/databases/repositories/variables.repository.ts index 5ea9711935..608a218545 100644 --- a/packages/cli/src/databases/repositories/variables.repository.ts +++ b/packages/cli/src/databases/repositories/variables.repository.ts @@ -1,8 +1,7 @@ +import { Variables } from '@n8n/db'; import { Service } from '@n8n/di'; import { DataSource, Repository } from '@n8n/typeorm'; -import { Variables } from '../entities/variables'; - @Service() export class VariablesRepository extends Repository { constructor(dataSource: DataSource) { diff --git a/packages/cli/src/databases/repositories/webhook.repository.ts b/packages/cli/src/databases/repositories/webhook.repository.ts index 5254793a78..3bde2469a9 100644 --- a/packages/cli/src/databases/repositories/webhook.repository.ts +++ b/packages/cli/src/databases/repositories/webhook.repository.ts @@ -1,8 +1,7 @@ +import { WebhookEntity } from '@n8n/db'; import { Service } from '@n8n/di'; import { DataSource, Repository } from '@n8n/typeorm'; -import { WebhookEntity } from '../entities/webhook-entity'; - @Service() export class WebhookRepository extends Repository { constructor(dataSource: DataSource) { diff --git a/packages/cli/src/databases/repositories/workflow.repository.ts b/packages/cli/src/databases/repositories/workflow.repository.ts index d67f22e94a..70cfcbd20c 100644 --- a/packages/cli/src/databases/repositories/workflow.repository.ts +++ b/packages/cli/src/databases/repositories/workflow.repository.ts @@ -1,5 +1,5 @@ import { GlobalConfig } from '@n8n/config'; -import { isStringArray } from '@n8n/db'; +import { isStringArray, WebhookEntity } from '@n8n/db'; import { Service } from '@n8n/di'; import { DataSource, Repository, In, Like } from '@n8n/typeorm'; import type { @@ -18,7 +18,6 @@ import type { ListQuery } from '@/types-db'; import { FolderRepository } from './folder.repository'; import type { Folder, FolderWithWorkflowAndSubFolderCount } from '../entities/folder'; import { TagEntity } from '../entities/tag-entity'; -import { WebhookEntity } from '../entities/webhook-entity'; import { WorkflowEntity } from '../entities/workflow-entity'; import { WorkflowTagMapping } from '../entities/workflow-tag-mapping'; diff --git a/packages/cli/src/deduplication/deduplication-helper.ts b/packages/cli/src/deduplication/deduplication-helper.ts index 00d547743e..bc7d9b48c5 100644 --- a/packages/cli/src/deduplication/deduplication-helper.ts +++ b/packages/cli/src/deduplication/deduplication-helper.ts @@ -1,21 +1,22 @@ +import type { ProcessedData } from '@n8n/db'; import { Container } from '@n8n/di'; import { createHash } from 'crypto'; -import { - type ICheckProcessedContextData, - type IDataDeduplicator, - type ICheckProcessedOptions, - type IDeduplicationOutput, - type DeduplicationScope, - type DeduplicationItemTypes, - type DeduplicationMode, - tryToParseDateTime, +import { tryToParseDateTime } from 'n8n-workflow'; +import type { + IProcessedDataEntries, + IProcessedDataLatest, + ICheckProcessedContextData, + IDataDeduplicator, + ICheckProcessedOptions, + IDeduplicationOutput, + DeduplicationScope, + DeduplicationItemTypes, + DeduplicationMode, } from 'n8n-workflow'; import * as assert from 'node:assert/strict'; -import type { ProcessedData } from '@/databases/entities/processed-data'; import { ProcessedDataRepository } from '@/databases/repositories/processed-data.repository'; import { DeduplicationError } from '@/errors/deduplication.error'; -import type { IProcessedDataEntries, IProcessedDataLatest } from '@/types-db'; export class DeduplicationHelper implements IDataDeduplicator { private static sortEntries( diff --git a/packages/cli/src/environments.ee/source-control/__tests__/source-control.service.test.ts b/packages/cli/src/environments.ee/source-control/__tests__/source-control.service.test.ts index 0de5ca4c7f..78b3d7a2c9 100644 --- a/packages/cli/src/environments.ee/source-control/__tests__/source-control.service.test.ts +++ b/packages/cli/src/environments.ee/source-control/__tests__/source-control.service.test.ts @@ -1,4 +1,5 @@ import type { SourceControlledFile } from '@n8n/api-types'; +import type { Variables } from '@n8n/db'; import { Container } from '@n8n/di'; import { mock } from 'jest-mock-extended'; import { InstanceSettings } from 'n8n-core'; @@ -6,7 +7,6 @@ import { InstanceSettings } from 'n8n-core'; import type { FolderWithWorkflowAndSubFolderCount } from '@/databases/entities/folder'; import type { TagEntity } from '@/databases/entities/tag-entity'; import type { User } from '@/databases/entities/user'; -import type { Variables } from '@/databases/entities/variables'; import type { FolderRepository } from '@/databases/repositories/folder.repository'; import type { TagRepository } from '@/databases/repositories/tag.repository'; import { SourceControlPreferencesService } from '@/environments.ee/source-control/source-control-preferences.service.ee'; diff --git a/packages/cli/src/environments.ee/source-control/source-control-import.service.ee.ts b/packages/cli/src/environments.ee/source-control/source-control-import.service.ee.ts index d3b263b0c5..8c40b8024f 100644 --- a/packages/cli/src/environments.ee/source-control/source-control-import.service.ee.ts +++ b/packages/cli/src/environments.ee/source-control/source-control-import.service.ee.ts @@ -1,4 +1,5 @@ import type { SourceControlledFile } from '@n8n/api-types'; +import type { Variables } from '@n8n/db'; import { Service } from '@n8n/di'; // eslint-disable-next-line n8n-local-rules/misplaced-n8n-typeorm-import import { In } from '@n8n/typeorm'; @@ -14,7 +15,6 @@ import type { Project } from '@/databases/entities/project'; import { SharedCredentials } from '@/databases/entities/shared-credentials'; import type { TagEntity } from '@/databases/entities/tag-entity'; import type { User } from '@/databases/entities/user'; -import type { Variables } from '@/databases/entities/variables'; import type { WorkflowTagMapping } from '@/databases/entities/workflow-tag-mapping'; import { CredentialsRepository } from '@/databases/repositories/credentials.repository'; import { FolderRepository } from '@/databases/repositories/folder.repository'; diff --git a/packages/cli/src/environments.ee/source-control/source-control.service.ee.ts b/packages/cli/src/environments.ee/source-control/source-control.service.ee.ts index 0e9fe5b2ba..fbc1513c2c 100644 --- a/packages/cli/src/environments.ee/source-control/source-control.service.ee.ts +++ b/packages/cli/src/environments.ee/source-control/source-control.service.ee.ts @@ -3,6 +3,7 @@ import type { PushWorkFolderRequestDto, SourceControlledFile, } from '@n8n/api-types'; +import type { Variables } from '@n8n/db'; import { Service } from '@n8n/di'; import { writeFileSync } from 'fs'; import { Logger } from 'n8n-core'; @@ -12,7 +13,6 @@ import type { PushResult } from 'simple-git'; import type { TagEntity } from '@/databases/entities/tag-entity'; import type { User } from '@/databases/entities/user'; -import type { Variables } from '@/databases/entities/variables'; import { FolderRepository } from '@/databases/repositories/folder.repository'; import { TagRepository } from '@/databases/repositories/tag.repository'; import { BadRequestError } from '@/errors/response-errors/bad-request.error'; diff --git a/packages/cli/src/environments.ee/variables/variables.service.ee.ts b/packages/cli/src/environments.ee/variables/variables.service.ee.ts index ab8c4b5409..dbd5b97493 100644 --- a/packages/cli/src/environments.ee/variables/variables.service.ee.ts +++ b/packages/cli/src/environments.ee/variables/variables.service.ee.ts @@ -1,7 +1,7 @@ import { generateNanoId } from '@n8n/db'; +import type { Variables } from '@n8n/db'; import { Service } from '@n8n/di'; -import type { Variables } from '@/databases/entities/variables'; import { VariablesRepository } from '@/databases/repositories/variables.repository'; import { VariableCountLimitReachedError } from '@/errors/variable-count-limit-reached.error'; import { VariableValidationError } from '@/errors/variable-validation.error'; diff --git a/packages/cli/src/eventbus/message-event-bus-destination/message-event-bus-destination-from-db.ts b/packages/cli/src/eventbus/message-event-bus-destination/message-event-bus-destination-from-db.ts index f091d529e4..226e122424 100644 --- a/packages/cli/src/eventbus/message-event-bus-destination/message-event-bus-destination-from-db.ts +++ b/packages/cli/src/eventbus/message-event-bus-destination/message-event-bus-destination-from-db.ts @@ -1,9 +1,8 @@ +import type { EventDestinations } from '@n8n/db'; import { Container } from '@n8n/di'; import { Logger } from 'n8n-core'; import { MessageEventBusDestinationTypeNames } from 'n8n-workflow'; -import type { EventDestinations } from '@/databases/entities/event-destinations'; - import { MessageEventBusDestinationSentry } from './message-event-bus-destination-sentry.ee'; import { MessageEventBusDestinationSyslog } from './message-event-bus-destination-syslog.ee'; import { MessageEventBusDestinationWebhook } from './message-event-bus-destination-webhook.ee'; diff --git a/packages/cli/src/ldap.ee/__tests__/ldap.service.test.ts b/packages/cli/src/ldap.ee/__tests__/ldap.service.test.ts index 209899cf5c..768697c002 100644 --- a/packages/cli/src/ldap.ee/__tests__/ldap.service.test.ts +++ b/packages/cli/src/ldap.ee/__tests__/ldap.service.test.ts @@ -1,3 +1,4 @@ +import type { Settings } from '@n8n/db'; import { QueryFailedError } from '@n8n/typeorm'; import { mock } from 'jest-mock-extended'; import { Client } from 'ldapts'; @@ -5,7 +6,6 @@ import type { Cipher } from 'n8n-core'; import { randomString } from 'n8n-workflow'; import config from '@/config'; -import type { Settings } from '@/databases/entities/settings'; import { AuthIdentityRepository } from '@/databases/repositories/auth-identity.repository'; import { SettingsRepository } from '@/databases/repositories/settings.repository'; import type { EventService } from '@/events/event.service'; diff --git a/packages/cli/src/requests.ts b/packages/cli/src/requests.ts index 192cd92cc0..53f34f0088 100644 --- a/packages/cli/src/requests.ts +++ b/packages/cli/src/requests.ts @@ -1,4 +1,5 @@ import type { ProjectIcon, ProjectRole, ProjectType } from '@n8n/api-types'; +import type { Variables } from '@n8n/db'; import type { AssignableRole, GlobalRole, Scope } from '@n8n/permissions'; import type express from 'express'; import type { @@ -9,7 +10,6 @@ import type { import type { Project } from '@/databases/entities/project'; import type { User } from '@/databases/entities/user'; -import type { Variables } from '@/databases/entities/variables'; import type { WorkflowHistory } from '@/databases/entities/workflow-history'; import type { ListQuery } from '@/types-db'; diff --git a/packages/cli/src/services/__tests__/community-packages.service.test.ts b/packages/cli/src/services/__tests__/community-packages.service.test.ts index 7298e73a63..4d3218c7b0 100644 --- a/packages/cli/src/services/__tests__/community-packages.service.test.ts +++ b/packages/cli/src/services/__tests__/community-packages.service.test.ts @@ -1,4 +1,6 @@ import type { GlobalConfig } from '@n8n/config'; +import { InstalledNodes } from '@n8n/db'; +import { InstalledPackages } from '@n8n/db'; import axios from 'axios'; import { exec } from 'child_process'; import { access as fsAccess, mkdir as fsMkdir } from 'fs/promises'; @@ -13,8 +15,6 @@ import { NPM_PACKAGE_STATUS_GOOD, RESPONSE_ERROR_MESSAGES, } from '@/constants'; -import { InstalledNodes } from '@/databases/entities/installed-nodes'; -import { InstalledPackages } from '@/databases/entities/installed-packages'; import { InstalledNodesRepository } from '@/databases/repositories/installed-nodes.repository'; import { InstalledPackagesRepository } from '@/databases/repositories/installed-packages.repository'; import type { CommunityPackages } from '@/interfaces'; diff --git a/packages/cli/src/services/community-packages.service.ts b/packages/cli/src/services/community-packages.service.ts index b6910a961f..25a13db5e5 100644 --- a/packages/cli/src/services/community-packages.service.ts +++ b/packages/cli/src/services/community-packages.service.ts @@ -1,5 +1,6 @@ import { GlobalConfig } from '@n8n/config'; import { LICENSE_FEATURES } from '@n8n/constants'; +import type { InstalledPackages } from '@n8n/db'; import { Service } from '@n8n/di'; import axios from 'axios'; import { exec } from 'child_process'; @@ -16,7 +17,6 @@ import { RESPONSE_ERROR_MESSAGES, UNKNOWN_FAILURE_REASON, } from '@/constants'; -import type { InstalledPackages } from '@/databases/entities/installed-packages'; import { InstalledPackagesRepository } from '@/databases/repositories/installed-packages.repository'; import { FeatureNotLicensedError } from '@/errors/feature-not-licensed.error'; import type { CommunityPackages } from '@/interfaces'; diff --git a/packages/cli/src/services/hooks.service.ts b/packages/cli/src/services/hooks.service.ts index 2d2b137279..8cdc340cbb 100644 --- a/packages/cli/src/services/hooks.service.ts +++ b/packages/cli/src/services/hooks.service.ts @@ -1,3 +1,4 @@ +import type { Settings } from '@n8n/db'; import { Service } from '@n8n/di'; // eslint-disable-next-line n8n-local-rules/misplaced-n8n-typeorm-import import type { FindManyOptions, FindOneOptions, FindOptionsWhere } from '@n8n/typeorm'; @@ -8,7 +9,6 @@ import type { NextFunction, Response } from 'express'; import { AuthService } from '@/auth/auth.service'; import type { AuthUser } from '@/databases/entities/auth-user'; import type { CredentialsEntity } from '@/databases/entities/credentials-entity'; -import type { Settings } from '@/databases/entities/settings'; import type { User } from '@/databases/entities/user'; import type { WorkflowEntity } from '@/databases/entities/workflow-entity'; import { AuthUserRepository } from '@/databases/repositories/auth-user.repository'; diff --git a/packages/cli/src/sso.ee/saml/saml.service.ee.ts b/packages/cli/src/sso.ee/saml/saml.service.ee.ts index d01b4f5cc2..c2febcc551 100644 --- a/packages/cli/src/sso.ee/saml/saml.service.ee.ts +++ b/packages/cli/src/sso.ee/saml/saml.service.ee.ts @@ -1,4 +1,5 @@ import type { SamlPreferences } from '@n8n/api-types'; +import type { Settings } from '@n8n/db'; import { Service } from '@n8n/di'; import axios from 'axios'; import type express from 'express'; @@ -8,7 +9,6 @@ import { jsonParse, UnexpectedError } from 'n8n-workflow'; import type { IdentityProviderInstance, ServiceProviderInstance } from 'samlify'; import type { BindingContext, PostBindingContext } from 'samlify/types/src/entity'; -import type { Settings } from '@/databases/entities/settings'; import type { User } from '@/databases/entities/user'; import { SettingsRepository } from '@/databases/repositories/settings.repository'; import { UserRepository } from '@/databases/repositories/user.repository'; diff --git a/packages/cli/src/types-db.ts b/packages/cli/src/types-db.ts index 6cf46f5fdf..806d0ea7cc 100644 --- a/packages/cli/src/types-db.ts +++ b/packages/cli/src/types-db.ts @@ -8,8 +8,6 @@ import type { ExecutionStatus, FeatureFlags, IUserSettings, - DeduplicationMode, - DeduplicationItemTypes, AnnotationVote, ExecutionSummary, IUser, @@ -148,16 +146,6 @@ export interface WorkflowWithSharingsMetaDataAndCredentials extends Omit; diff --git a/packages/cli/src/webhooks/__tests__/webhook.service.test.ts b/packages/cli/src/webhooks/__tests__/webhook.service.test.ts index 46ffb82dc6..8737b57df0 100644 --- a/packages/cli/src/webhooks/__tests__/webhook.service.test.ts +++ b/packages/cli/src/webhooks/__tests__/webhook.service.test.ts @@ -1,10 +1,10 @@ +import { WebhookEntity } from '@n8n/db'; import { mock } from 'jest-mock-extended'; import type { INode, INodeType, IWebhookData, IWorkflowExecuteAdditionalData } from 'n8n-workflow'; import { Workflow } from 'n8n-workflow'; import { v4 as uuid } from 'uuid'; import config from '@/config'; -import { WebhookEntity } from '@/databases/entities/webhook-entity'; import type { WebhookRepository } from '@/databases/repositories/webhook.repository'; import type { NodeTypes } from '@/node-types'; import type { CacheService } from '@/services/cache/cache.service'; diff --git a/packages/cli/src/webhooks/webhook.service.ts b/packages/cli/src/webhooks/webhook.service.ts index dfc79de68a..cfd8fb036f 100644 --- a/packages/cli/src/webhooks/webhook.service.ts +++ b/packages/cli/src/webhooks/webhook.service.ts @@ -1,3 +1,4 @@ +import type { WebhookEntity } from '@n8n/db'; import { Service } from '@n8n/di'; import { HookContext, WebhookContext, Logger } from 'n8n-core'; import { Node, NodeHelpers, UnexpectedError } from 'n8n-workflow'; @@ -14,7 +15,6 @@ import type { WorkflowExecuteMode, } from 'n8n-workflow'; -import type { WebhookEntity } from '@/databases/entities/webhook-entity'; import { WebhookRepository } from '@/databases/repositories/webhook.repository'; import { NodeTypes } from '@/node-types'; import { CacheService } from '@/services/cache/cache.service'; diff --git a/packages/cli/test/integration/active-workflow-manager.test.ts b/packages/cli/test/integration/active-workflow-manager.test.ts index ae1b1d70b4..bacc24229e 100644 --- a/packages/cli/test/integration/active-workflow-manager.test.ts +++ b/packages/cli/test/integration/active-workflow-manager.test.ts @@ -1,3 +1,4 @@ +import type { WebhookEntity } from '@n8n/db'; import { Container } from '@n8n/di'; import { mock } from 'jest-mock-extended'; import { Logger } from 'n8n-core'; @@ -13,7 +14,6 @@ import type { import { ActiveExecutions } from '@/active-executions'; import { ActiveWorkflowManager } from '@/active-workflow-manager'; -import type { WebhookEntity } from '@/databases/entities/webhook-entity'; import { WorkflowRepository } from '@/databases/repositories/workflow.repository'; import { ExecutionService } from '@/executions/execution.service'; import { ExternalHooks } from '@/external-hooks'; diff --git a/packages/cli/test/integration/community-packages.api.test.ts b/packages/cli/test/integration/community-packages.api.test.ts index 895fc6dbbb..b3f1d47156 100644 --- a/packages/cli/test/integration/community-packages.api.test.ts +++ b/packages/cli/test/integration/community-packages.api.test.ts @@ -1,7 +1,7 @@ +import type { InstalledNodes } from '@n8n/db'; +import type { InstalledPackages } from '@n8n/db'; import path from 'path'; -import type { InstalledNodes } from '@/databases/entities/installed-nodes'; -import type { InstalledPackages } from '@/databases/entities/installed-packages'; import { LoadNodesAndCredentials } from '@/load-nodes-and-credentials'; import { CommunityPackagesService } from '@/services/community-packages.service'; diff --git a/packages/cli/test/integration/security-audit/utils.ts b/packages/cli/test/integration/security-audit/utils.ts index 9206ab51c9..0c0737b60c 100644 --- a/packages/cli/test/integration/security-audit/utils.ts +++ b/packages/cli/test/integration/security-audit/utils.ts @@ -1,11 +1,11 @@ import { GlobalConfig } from '@n8n/config'; +import type { InstalledNodes } from '@n8n/db'; +import type { InstalledPackages } from '@n8n/db'; import { Container } from '@n8n/di'; import nock from 'nock'; import { v4 as uuid } from 'uuid'; import * as constants from '@/constants'; -import type { InstalledNodes } from '@/databases/entities/installed-nodes'; -import type { InstalledPackages } from '@/databases/entities/installed-packages'; import { WorkflowRepository } from '@/databases/repositories/workflow.repository'; import type { Risk } from '@/security-audit/types'; import { toReportTitle } from '@/security-audit/utils'; diff --git a/packages/cli/test/integration/shared/utils/community-nodes.ts b/packages/cli/test/integration/shared/utils/community-nodes.ts index 033d86c709..507ad4d609 100644 --- a/packages/cli/test/integration/shared/utils/community-nodes.ts +++ b/packages/cli/test/integration/shared/utils/community-nodes.ts @@ -1,7 +1,7 @@ +import { InstalledPackages } from '@n8n/db'; import { Container } from '@n8n/di'; import { NODE_PACKAGE_PREFIX } from '@/constants'; -import { InstalledPackages } from '@/databases/entities/installed-packages'; import { InstalledNodesRepository } from '@/databases/repositories/installed-nodes.repository'; import { InstalledPackagesRepository } from '@/databases/repositories/installed-packages.repository'; diff --git a/packages/cli/test/integration/variables.test.ts b/packages/cli/test/integration/variables.test.ts index da7ccb1cfa..1670540490 100644 --- a/packages/cli/test/integration/variables.test.ts +++ b/packages/cli/test/integration/variables.test.ts @@ -1,7 +1,7 @@ import { generateNanoId } from '@n8n/db'; +import type { Variables } from '@n8n/db'; import { Container } from '@n8n/di'; -import type { Variables } from '@/databases/entities/variables'; import { VariablesRepository } from '@/databases/repositories/variables.repository'; import { VariablesService } from '@/environments.ee/variables/variables.service.ee'; import { CacheService } from '@/services/cache/cache.service'; diff --git a/packages/workflow/src/Interfaces.ts b/packages/workflow/src/Interfaces.ts index 73d6b97b8b..594ebd45aa 100644 --- a/packages/workflow/src/Interfaces.ts +++ b/packages/workflow/src/Interfaces.ts @@ -704,6 +704,16 @@ export type DeduplicationScope = 'node' | 'workflow'; export type DeduplicationItemTypes = string | number; export type DeduplicationMode = 'entries' | 'latestIncrementalKey' | 'latestDate'; +export interface IProcessedDataLatest { + mode: DeduplicationMode; + data: DeduplicationItemTypes; +} + +export interface IProcessedDataEntries { + mode: DeduplicationMode; + data: DeduplicationItemTypes[]; +} + export interface IDeduplicationOutput { new: DeduplicationItemTypes[]; processed: DeduplicationItemTypes[];