refactor(core): Move shared workflow and shared credentials repositories to @n8n/db (#15255)

This commit is contained in:
Iván Ovejero
2025-05-09 17:10:25 +02:00
committed by GitHub
parent e34bca779b
commit 1f6a36e26e
56 changed files with 119 additions and 93 deletions

View File

@@ -28,3 +28,5 @@ export { VariablesRepository } from './variables.repository';
export { WorkflowHistoryRepository } from './workflow-history.repository'; export { WorkflowHistoryRepository } from './workflow-history.repository';
export { WorkflowStatisticsRepository } from './workflow-statistics.repository'; export { WorkflowStatisticsRepository } from './workflow-statistics.repository';
export { WorkflowTagMappingRepository } from './workflow-tag-mapping.repository'; export { WorkflowTagMappingRepository } from './workflow-tag-mapping.repository';
export { SharedWorkflowRepository } from './shared-workflow.repository';
export { SharedCredentialsRepository } from './shared-credentials.repository';

View File

@@ -1,10 +1,11 @@
import { SharedCredentials } from '@n8n/db';
import type { Project } from '@n8n/db';
import { Service } from '@n8n/di'; import { Service } from '@n8n/di';
import type { CredentialSharingRole, ProjectRole } from '@n8n/permissions'; import type { CredentialSharingRole, ProjectRole } from '@n8n/permissions';
import type { EntityManager, FindOptionsWhere } from '@n8n/typeorm'; import type { EntityManager, FindOptionsWhere } from '@n8n/typeorm';
import { DataSource, In, Not, Repository } from '@n8n/typeorm'; import { DataSource, In, Not, Repository } from '@n8n/typeorm';
import type { Project } from '../entities';
import { SharedCredentials } from '../entities';
@Service() @Service()
export class SharedCredentialsRepository extends Repository<SharedCredentials> { export class SharedCredentialsRepository extends Repository<SharedCredentials> {
constructor(dataSource: DataSource) { constructor(dataSource: DataSource) {

View File

@@ -1,10 +1,11 @@
import { SharedWorkflow } from '@n8n/db';
import type { Project } from '@n8n/db';
import { Service } from '@n8n/di'; import { Service } from '@n8n/di';
import type { WorkflowSharingRole } from '@n8n/permissions'; import type { WorkflowSharingRole } from '@n8n/permissions';
import { DataSource, Repository, In, Not } from '@n8n/typeorm'; import { DataSource, Repository, In, Not } from '@n8n/typeorm';
import type { EntityManager, FindManyOptions, FindOptionsWhere } from '@n8n/typeorm'; import type { EntityManager, FindManyOptions, FindOptionsWhere } from '@n8n/typeorm';
import type { Project } from '../entities';
import { SharedWorkflow } from '../entities';
@Service() @Service()
export class SharedWorkflowRepository extends Repository<SharedWorkflow> { export class SharedWorkflowRepository extends Repository<SharedWorkflow> {
constructor(dataSource: DataSource) { constructor(dataSource: DataSource) {

View File

@@ -1,5 +1,5 @@
import type { WorkflowEntity } from '@n8n/db'; import type { WorkflowEntity } from '@n8n/db';
import { generateNanoId, ProjectRepository } from '@n8n/db'; import { generateNanoId, ProjectRepository, SharedWorkflowRepository } from '@n8n/db';
import { Container } from '@n8n/di'; import { Container } from '@n8n/di';
import { Flags } from '@oclif/core'; import { Flags } from '@oclif/core';
import glob from 'fast-glob'; import glob from 'fast-glob';
@@ -8,7 +8,6 @@ import type { IWorkflowBase, WorkflowId } from 'n8n-workflow';
import { jsonParse, UserError } from 'n8n-workflow'; import { jsonParse, UserError } from 'n8n-workflow';
import { UM_FIX_INSTRUCTION } from '@/constants'; import { UM_FIX_INSTRUCTION } from '@/constants';
import { SharedWorkflowRepository } from '@/databases/repositories/shared-workflow.repository';
import { UserRepository } from '@/databases/repositories/user.repository'; import { UserRepository } from '@/databases/repositories/user.repository';
import { WorkflowRepository } from '@/databases/repositories/workflow.repository'; import { WorkflowRepository } from '@/databases/repositories/workflow.repository';
import type { IWorkflowToImport } from '@/interfaces'; import type { IWorkflowToImport } from '@/interfaces';

View File

@@ -3,6 +3,8 @@ import {
AuthProviderSyncHistoryRepository, AuthProviderSyncHistoryRepository,
ProjectRelationRepository, ProjectRelationRepository,
ProjectRepository, ProjectRepository,
SharedCredentialsRepository,
SharedWorkflowRepository,
} from '@n8n/db'; } from '@n8n/db';
import { Container } from '@n8n/di'; import { Container } from '@n8n/di';
// eslint-disable-next-line n8n-local-rules/misplaced-n8n-typeorm-import // eslint-disable-next-line n8n-local-rules/misplaced-n8n-typeorm-import
@@ -13,8 +15,6 @@ import { UserError } from 'n8n-workflow';
import { UM_FIX_INSTRUCTION } from '@/constants'; import { UM_FIX_INSTRUCTION } from '@/constants';
import { CredentialsService } from '@/credentials/credentials.service'; import { CredentialsService } from '@/credentials/credentials.service';
import { SettingsRepository } from '@/databases/repositories/settings.repository'; import { SettingsRepository } from '@/databases/repositories/settings.repository';
import { SharedCredentialsRepository } from '@/databases/repositories/shared-credentials.repository';
import { SharedWorkflowRepository } from '@/databases/repositories/shared-workflow.repository';
import { UserRepository } from '@/databases/repositories/user.repository'; import { UserRepository } from '@/databases/repositories/user.repository';
import { LDAP_DEFAULT_CONFIGURATION, LDAP_FEATURE_NAME } from '@/ldap.ee/constants'; import { LDAP_DEFAULT_CONFIGURATION, LDAP_FEATURE_NAME } from '@/ldap.ee/constants';
import { WorkflowService } from '@/workflows/workflow.service'; import { WorkflowService } from '@/workflows/workflow.service';

View File

@@ -1,10 +1,14 @@
import type { CredentialsEntity } from '@n8n/db'; import type { CredentialsEntity } from '@n8n/db';
import { User, CredentialsRepository, ProjectRepository } from '@n8n/db'; import {
User,
CredentialsRepository,
ProjectRepository,
SharedCredentialsRepository,
SharedWorkflowRepository,
} from '@n8n/db';
import { Container } from '@n8n/di'; import { Container } from '@n8n/di';
import { SettingsRepository } from '@/databases/repositories/settings.repository'; import { SettingsRepository } from '@/databases/repositories/settings.repository';
import { SharedCredentialsRepository } from '@/databases/repositories/shared-credentials.repository';
import { SharedWorkflowRepository } from '@/databases/repositories/shared-workflow.repository';
import { UserRepository } from '@/databases/repositories/user.repository'; import { UserRepository } from '@/databases/repositories/user.repository';
import { BaseCommand } from '../base-command'; import { BaseCommand } from '../base-command';

View File

@@ -1,6 +1,13 @@
import { RoleChangeRequestDto, SettingsUpdateRequestDto } from '@n8n/api-types'; import { RoleChangeRequestDto, SettingsUpdateRequestDto } from '@n8n/api-types';
import type { PublicUser } from '@n8n/db'; import type { PublicUser } from '@n8n/db';
import { Project, User, AuthIdentity, ProjectRepository } from '@n8n/db'; import {
Project,
User,
AuthIdentity,
ProjectRepository,
SharedCredentialsRepository,
SharedWorkflowRepository,
} from '@n8n/db';
import { import {
GlobalScope, GlobalScope,
Delete, Delete,
@@ -16,8 +23,6 @@ import { Logger } from 'n8n-core';
import { AuthService } from '@/auth/auth.service'; import { AuthService } from '@/auth/auth.service';
import { CredentialsService } from '@/credentials/credentials.service'; import { CredentialsService } from '@/credentials/credentials.service';
import { SharedCredentialsRepository } from '@/databases/repositories/shared-credentials.repository';
import { SharedWorkflowRepository } from '@/databases/repositories/shared-workflow.repository';
import { UserRepository } from '@/databases/repositories/user.repository'; import { UserRepository } from '@/databases/repositories/user.repository';
import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { BadRequestError } from '@/errors/response-errors/bad-request.error';
import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { ForbiddenError } from '@/errors/response-errors/forbidden.error';

View File

@@ -3,7 +3,7 @@
/* eslint-disable @typescript-eslint/no-unsafe-assignment */ /* eslint-disable @typescript-eslint/no-unsafe-assignment */
/* eslint-disable @typescript-eslint/no-unsafe-return */ /* eslint-disable @typescript-eslint/no-unsafe-return */
import type { CredentialsEntity, ICredentialsDb } from '@n8n/db'; import type { CredentialsEntity, ICredentialsDb } from '@n8n/db';
import { CredentialsRepository } from '@n8n/db'; import { CredentialsRepository, SharedCredentialsRepository } from '@n8n/db';
import { Service } from '@n8n/di'; import { Service } from '@n8n/di';
// eslint-disable-next-line n8n-local-rules/misplaced-n8n-typeorm-import // eslint-disable-next-line n8n-local-rules/misplaced-n8n-typeorm-import
import { In } from '@n8n/typeorm'; import { In } from '@n8n/typeorm';
@@ -32,7 +32,6 @@ import { ICredentialsHelper, NodeHelpers, Workflow, UnexpectedError } from 'n8n-
import { CredentialTypes } from '@/credential-types'; import { CredentialTypes } from '@/credential-types';
import { CredentialsOverwrites } from '@/credentials-overwrites'; import { CredentialsOverwrites } from '@/credentials-overwrites';
import { SharedCredentialsRepository } from '@/databases/repositories/shared-credentials.repository';
import { RESPONSE_ERROR_MESSAGES } from './constants'; import { RESPONSE_ERROR_MESSAGES } from './constants';
import { CredentialNotFoundError } from './errors/credential-not-found.error'; import { CredentialNotFoundError } from './errors/credential-not-found.error';

View File

@@ -1,7 +1,7 @@
import type { SharedCredentialsRepository } from '@n8n/db';
import { mock } from 'jest-mock-extended'; import { mock } from 'jest-mock-extended';
import { createRawProjectData } from '@/__tests__/project.test-data'; import { createRawProjectData } from '@/__tests__/project.test-data';
import type { SharedCredentialsRepository } from '@/databases/repositories/shared-credentials.repository';
import type { EventService } from '@/events/event.service'; import type { EventService } from '@/events/event.service';
import type { AuthenticatedRequest } from '@/requests'; import type { AuthenticatedRequest } from '@/requests';

View File

@@ -1,5 +1,5 @@
import type { CredentialsEntity, SharedCredentials, User } from '@n8n/db'; import type { CredentialsEntity, SharedCredentials, User } from '@n8n/db';
import { CredentialsRepository } from '@n8n/db'; import { CredentialsRepository, SharedCredentialsRepository } from '@n8n/db';
import { Service } from '@n8n/di'; import { Service } from '@n8n/di';
import { hasGlobalScope, rolesWithScope } from '@n8n/permissions'; import { hasGlobalScope, rolesWithScope } from '@n8n/permissions';
import type { CredentialSharingRole, ProjectRole, Scope } from '@n8n/permissions'; import type { CredentialSharingRole, ProjectRole, Scope } from '@n8n/permissions';
@@ -8,8 +8,6 @@ import type { EntityManager, FindOptionsWhere } from '@n8n/typeorm';
// eslint-disable-next-line n8n-local-rules/misplaced-n8n-typeorm-import // eslint-disable-next-line n8n-local-rules/misplaced-n8n-typeorm-import
import { In } from '@n8n/typeorm'; import { In } from '@n8n/typeorm';
import { SharedCredentialsRepository } from '@/databases/repositories/shared-credentials.repository';
@Service() @Service()
export class CredentialsFinderService { export class CredentialsFinderService {
constructor( constructor(

View File

@@ -5,7 +5,7 @@ import {
GenerateCredentialNameRequestQuery, GenerateCredentialNameRequestQuery,
} from '@n8n/api-types'; } from '@n8n/api-types';
import { GlobalConfig } from '@n8n/config'; import { GlobalConfig } from '@n8n/config';
import { SharedCredentials, ProjectRelationRepository } from '@n8n/db'; import { SharedCredentials, ProjectRelationRepository, SharedCredentialsRepository } from '@n8n/db';
import { import {
Delete, Delete,
Get, Get,
@@ -26,7 +26,6 @@ import { deepCopy } from 'n8n-workflow';
import type { ICredentialDataDecryptedObject } from 'n8n-workflow'; import type { ICredentialDataDecryptedObject } from 'n8n-workflow';
import { z } from 'zod'; import { z } from 'zod';
import { SharedCredentialsRepository } from '@/databases/repositories/shared-credentials.repository';
import * as Db from '@/db'; import * as Db from '@/db';
import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { BadRequestError } from '@/errors/response-errors/bad-request.error';
import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { ForbiddenError } from '@/errors/response-errors/forbidden.error';

View File

@@ -1,12 +1,11 @@
import { Project, SharedCredentials } from '@n8n/db';
import type { CredentialsEntity, User } from '@n8n/db'; import type { CredentialsEntity, User } from '@n8n/db';
import { Project, SharedCredentials, SharedCredentialsRepository } from '@n8n/db';
import { Service } from '@n8n/di'; import { Service } from '@n8n/di';
import { hasGlobalScope, rolesWithScope } from '@n8n/permissions'; import { hasGlobalScope, rolesWithScope } from '@n8n/permissions';
// eslint-disable-next-line n8n-local-rules/misplaced-n8n-typeorm-import // eslint-disable-next-line n8n-local-rules/misplaced-n8n-typeorm-import
import { In, type EntityManager } from '@n8n/typeorm'; import { In, type EntityManager } from '@n8n/typeorm';
import type { ICredentialDataDecryptedObject } from 'n8n-workflow'; import type { ICredentialDataDecryptedObject } from 'n8n-workflow';
import { SharedCredentialsRepository } from '@/databases/repositories/shared-credentials.repository';
import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { NotFoundError } from '@/errors/response-errors/not-found.error';
import { TransferCredentialError } from '@/errors/response-errors/transfer-credential.error'; import { TransferCredentialError } from '@/errors/response-errors/transfer-credential.error';
import { OwnershipService } from '@/services/ownership.service'; import { OwnershipService } from '@/services/ownership.service';

View File

@@ -5,6 +5,7 @@ import {
SharedCredentials, SharedCredentials,
CredentialsRepository, CredentialsRepository,
ProjectRepository, ProjectRepository,
SharedCredentialsRepository,
} from '@n8n/db'; } from '@n8n/db';
import { Service } from '@n8n/di'; import { Service } from '@n8n/di';
import { hasGlobalScope, type Scope } from '@n8n/permissions'; import { hasGlobalScope, type Scope } from '@n8n/permissions';
@@ -27,7 +28,6 @@ import { CREDENTIAL_EMPTY_VALUE, deepCopy, NodeHelpers, UnexpectedError } from '
import { CREDENTIAL_BLANKING_VALUE } from '@/constants'; import { CREDENTIAL_BLANKING_VALUE } from '@/constants';
import { CredentialTypes } from '@/credential-types'; import { CredentialTypes } from '@/credential-types';
import { createCredentialsFromCredentialsEntity } from '@/credentials-helper'; import { createCredentialsFromCredentialsEntity } from '@/credentials-helper';
import { SharedCredentialsRepository } from '@/databases/repositories/shared-credentials.repository';
import { UserRepository } from '@/databases/repositories/user.repository'; import { UserRepository } from '@/databases/repositories/user.repository';
import * as Db from '@/db'; import * as Db from '@/db';
import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { BadRequestError } from '@/errors/response-errors/bad-request.error';

View File

@@ -4,13 +4,13 @@ import type { SharedWorkflow } from '@n8n/db';
import type { FolderRepository } from '@n8n/db'; import type { FolderRepository } from '@n8n/db';
import type { TagRepository } from '@n8n/db'; import type { TagRepository } from '@n8n/db';
import type { WorkflowTagMappingRepository } from '@n8n/db'; import type { WorkflowTagMappingRepository } from '@n8n/db';
import type { SharedCredentialsRepository } from '@n8n/db';
import type { SharedWorkflowRepository } from '@n8n/db';
import { Container } from '@n8n/di'; import { Container } from '@n8n/di';
import { mock, captor } from 'jest-mock-extended'; import { mock, captor } from 'jest-mock-extended';
import { Cipher, type InstanceSettings } from 'n8n-core'; import { Cipher, type InstanceSettings } from 'n8n-core';
import fsp from 'node:fs/promises'; import fsp from 'node:fs/promises';
import type { SharedCredentialsRepository } from '@/databases/repositories/shared-credentials.repository';
import type { SharedWorkflowRepository } from '@/databases/repositories/shared-workflow.repository';
import type { WorkflowRepository } from '@/databases/repositories/workflow.repository'; import type { WorkflowRepository } from '@/databases/repositories/workflow.repository';
import type { VariablesService } from '../../variables/variables.service.ee'; import type { VariablesService } from '../../variables/variables.service.ee';

View File

@@ -1,6 +1,12 @@
import type { SourceControlledFile } from '@n8n/api-types'; import type { SourceControlledFile } from '@n8n/api-types';
import type { IWorkflowDb } from '@n8n/db'; import type { IWorkflowDb } from '@n8n/db';
import { FolderRepository, TagRepository, WorkflowTagMappingRepository } from '@n8n/db'; import {
FolderRepository,
TagRepository,
WorkflowTagMappingRepository,
SharedCredentialsRepository,
SharedWorkflowRepository,
} from '@n8n/db';
import { Service } from '@n8n/di'; import { Service } from '@n8n/di';
// eslint-disable-next-line n8n-local-rules/misplaced-n8n-typeorm-import // eslint-disable-next-line n8n-local-rules/misplaced-n8n-typeorm-import
import { In } from '@n8n/typeorm'; import { In } from '@n8n/typeorm';
@@ -10,8 +16,6 @@ import { UnexpectedError, type ICredentialDataDecryptedObject } from 'n8n-workfl
import { writeFile as fsWriteFile, rm as fsRm } from 'node:fs/promises'; import { writeFile as fsWriteFile, rm as fsRm } from 'node:fs/promises';
import path from 'path'; import path from 'path';
import { SharedCredentialsRepository } from '@/databases/repositories/shared-credentials.repository';
import { SharedWorkflowRepository } from '@/databases/repositories/shared-workflow.repository';
import { WorkflowRepository } from '@/databases/repositories/workflow.repository'; import { WorkflowRepository } from '@/databases/repositories/workflow.repository';
import { formatWorkflow } from '@/workflows/workflow.formatter'; import { formatWorkflow } from '@/workflows/workflow.formatter';

View File

@@ -8,6 +8,8 @@ import {
TagRepository, TagRepository,
VariablesRepository, VariablesRepository,
WorkflowTagMappingRepository, WorkflowTagMappingRepository,
SharedCredentialsRepository,
SharedWorkflowRepository,
} from '@n8n/db'; } from '@n8n/db';
import { Service } from '@n8n/di'; import { Service } from '@n8n/di';
// eslint-disable-next-line n8n-local-rules/misplaced-n8n-typeorm-import // eslint-disable-next-line n8n-local-rules/misplaced-n8n-typeorm-import
@@ -20,8 +22,6 @@ import path from 'path';
import { ActiveWorkflowManager } from '@/active-workflow-manager'; import { ActiveWorkflowManager } from '@/active-workflow-manager';
import { CredentialsService } from '@/credentials/credentials.service'; import { CredentialsService } from '@/credentials/credentials.service';
import { SharedCredentialsRepository } from '@/databases/repositories/shared-credentials.repository';
import { SharedWorkflowRepository } from '@/databases/repositories/shared-workflow.repository';
import { UserRepository } from '@/databases/repositories/user.repository'; import { UserRepository } from '@/databases/repositories/user.repository';
import { WorkflowRepository } from '@/databases/repositories/workflow.repository'; import { WorkflowRepository } from '@/databases/repositories/workflow.repository';
import type { IWorkflowToImport } from '@/interfaces'; import type { IWorkflowToImport } from '@/interfaces';

View File

@@ -4,13 +4,13 @@ import type { WorkflowEntity } from '@n8n/db';
import type { IWorkflowDb } from '@n8n/db'; import type { IWorkflowDb } from '@n8n/db';
import type { CredentialsRepository } from '@n8n/db'; import type { CredentialsRepository } from '@n8n/db';
import type { ProjectRelationRepository } from '@n8n/db'; import type { ProjectRelationRepository } from '@n8n/db';
import type { SharedWorkflowRepository } from '@n8n/db';
import { mock } from 'jest-mock-extended'; import { mock } from 'jest-mock-extended';
import { type BinaryDataConfig, InstanceSettings } from 'n8n-core'; import { type BinaryDataConfig, InstanceSettings } from 'n8n-core';
import type { INode, INodesGraphResult } from 'n8n-workflow'; import type { INode, INodesGraphResult } from 'n8n-workflow';
import { NodeApiError, TelemetryHelpers, type IRun, type IWorkflowBase } from 'n8n-workflow'; import { NodeApiError, TelemetryHelpers, type IRun, type IWorkflowBase } from 'n8n-workflow';
import { N8N_VERSION } from '@/constants'; import { N8N_VERSION } from '@/constants';
import type { SharedWorkflowRepository } from '@/databases/repositories/shared-workflow.repository';
import type { WorkflowRepository } from '@/databases/repositories/workflow.repository'; import type { WorkflowRepository } from '@/databases/repositories/workflow.repository';
import { EventService } from '@/events/event.service'; import { EventService } from '@/events/event.service';
import type { RelayEventMap } from '@/events/maps/relay.event-map'; import type { RelayEventMap } from '@/events/maps/relay.event-map';

View File

@@ -1,5 +1,9 @@
import { GlobalConfig } from '@n8n/config'; import { GlobalConfig } from '@n8n/config';
import { CredentialsRepository, ProjectRelationRepository } from '@n8n/db'; import {
CredentialsRepository,
ProjectRelationRepository,
SharedWorkflowRepository,
} from '@n8n/db';
import { Service } from '@n8n/di'; import { Service } from '@n8n/di';
import { snakeCase } from 'change-case'; import { snakeCase } from 'change-case';
import { BinaryDataConfig, InstanceSettings } from 'n8n-core'; import { BinaryDataConfig, InstanceSettings } from 'n8n-core';
@@ -10,7 +14,6 @@ import { get as pslGet } from 'psl';
import config from '@/config'; import config from '@/config';
import { N8N_VERSION } from '@/constants'; import { N8N_VERSION } from '@/constants';
import { SharedWorkflowRepository } from '@/databases/repositories/shared-workflow.repository';
import { WorkflowRepository } from '@/databases/repositories/workflow.repository'; import { WorkflowRepository } from '@/databases/repositories/workflow.repository';
import { EventService } from '@/events/event.service'; import { EventService } from '@/events/event.service';
import type { RelayEventMap } from '@/events/maps/relay.event-map'; import type { RelayEventMap } from '@/events/maps/relay.event-map';

View File

@@ -1,9 +1,9 @@
import type { Project } from '@n8n/db'; import type { Project } from '@n8n/db';
import type { User } from '@n8n/db'; import type { User } from '@n8n/db';
import type { SharedCredentialsRepository } from '@n8n/db';
import { mock } from 'jest-mock-extended'; import { mock } from 'jest-mock-extended';
import type { INode } from 'n8n-workflow'; import type { INode } from 'n8n-workflow';
import type { SharedCredentialsRepository } from '@/databases/repositories/shared-credentials.repository';
import type { OwnershipService } from '@/services/ownership.service'; import type { OwnershipService } from '@/services/ownership.service';
import type { ProjectService } from '@/services/project.service.ee'; import type { ProjectService } from '@/services/project.service.ee';

View File

@@ -1,10 +1,10 @@
import type { Project } from '@n8n/db'; import type { Project } from '@n8n/db';
import { SharedCredentialsRepository } from '@n8n/db';
import { Service } from '@n8n/di'; import { Service } from '@n8n/di';
import { hasGlobalScope } from '@n8n/permissions'; import { hasGlobalScope } from '@n8n/permissions';
import type { INode } from 'n8n-workflow'; import type { INode } from 'n8n-workflow';
import { UserError } from 'n8n-workflow'; import { UserError } from 'n8n-workflow';
import { SharedCredentialsRepository } from '@/databases/repositories/shared-credentials.repository';
import { OwnershipService } from '@/services/ownership.service'; import { OwnershipService } from '@/services/ownership.service';
import { ProjectService } from '@/services/project.service.ee'; import { ProjectService } from '@/services/project.service.ee';

View File

@@ -1,6 +1,7 @@
import type { Project } from '@n8n/db'; import type { Project } from '@n8n/db';
import type { WorkflowEntity } from '@n8n/db'; import type { WorkflowEntity } from '@n8n/db';
import type { IWorkflowDb } from '@n8n/db'; import type { IWorkflowDb } from '@n8n/db';
import type { SharedWorkflowRepository } from '@n8n/db';
import type { WorkflowExecuteAfterContext } from '@n8n/decorators'; import type { WorkflowExecuteAfterContext } from '@n8n/decorators';
import { Container } from '@n8n/di'; import { Container } from '@n8n/di';
import { In } from '@n8n/typeorm'; import { In } from '@n8n/typeorm';
@@ -13,7 +14,6 @@ import {
type WorkflowExecuteMode, type WorkflowExecuteMode,
} from 'n8n-workflow'; } from 'n8n-workflow';
import type { SharedWorkflowRepository } from '@/databases/repositories/shared-workflow.repository';
import type { TypeUnit } from '@/modules/insights/database/entities/insights-shared'; import type { TypeUnit } from '@/modules/insights/database/entities/insights-shared';
import { InsightsMetadataRepository } from '@/modules/insights/database/repositories/insights-metadata.repository'; import { InsightsMetadataRepository } from '@/modules/insights/database/repositories/insights-metadata.repository';
import { InsightsRawRepository } from '@/modules/insights/database/repositories/insights-raw.repository'; import { InsightsRawRepository } from '@/modules/insights/database/repositories/insights-raw.repository';

View File

@@ -1,10 +1,9 @@
import type { WorkflowEntity } from '@n8n/db'; import type { WorkflowEntity } from '@n8n/db';
import { SharedWorkflowRepository } from '@n8n/db';
import { Container } from '@n8n/di'; import { Container } from '@n8n/di';
import type { DateTime } from 'luxon'; import type { DateTime } from 'luxon';
import type { IWorkflowBase } from 'n8n-workflow'; import type { IWorkflowBase } from 'n8n-workflow';
import { SharedWorkflowRepository } from '@/databases/repositories/shared-workflow.repository';
import { InsightsByPeriodRepository } from '../../repositories/insights-by-period.repository'; import { InsightsByPeriodRepository } from '../../repositories/insights-by-period.repository';
import { InsightsMetadataRepository } from '../../repositories/insights-metadata.repository'; import { InsightsMetadataRepository } from '../../repositories/insights-metadata.repository';
import { InsightsRawRepository } from '../../repositories/insights-raw.repository'; import { InsightsRawRepository } from '../../repositories/insights-raw.repository';

View File

@@ -1,3 +1,4 @@
import { SharedWorkflowRepository } from '@n8n/db';
import { OnLifecycleEvent, type WorkflowExecuteAfterContext } from '@n8n/decorators'; import { OnLifecycleEvent, type WorkflowExecuteAfterContext } from '@n8n/decorators';
import { Service } from '@n8n/di'; import { Service } from '@n8n/di';
import { In } from '@n8n/typeorm'; import { In } from '@n8n/typeorm';
@@ -5,7 +6,6 @@ import { DateTime } from 'luxon';
import { Logger } from 'n8n-core'; import { Logger } from 'n8n-core';
import { UnexpectedError, type ExecutionStatus, type WorkflowExecuteMode } from 'n8n-workflow'; import { UnexpectedError, type ExecutionStatus, type WorkflowExecuteMode } from 'n8n-workflow';
import { SharedWorkflowRepository } from '@/databases/repositories/shared-workflow.repository';
import { InsightsMetadata } from '@/modules/insights/database/entities/insights-metadata'; import { InsightsMetadata } from '@/modules/insights/database/entities/insights-metadata';
import { InsightsRaw } from '@/modules/insights/database/entities/insights-raw'; import { InsightsRaw } from '@/modules/insights/database/entities/insights-raw';

View File

@@ -1,14 +1,11 @@
import type { User } from '@n8n/db'; import type { User } from '@n8n/db';
import { ProjectRepository } from '@n8n/db'; import { ProjectRepository, SharedCredentialsRepository, SharedWorkflowRepository } from '@n8n/db';
import { Container } from '@n8n/di'; import { Container } from '@n8n/di';
import { hasGlobalScope, rolesWithScope, type Scope } from '@n8n/permissions'; import { hasGlobalScope, rolesWithScope, type Scope } from '@n8n/permissions';
// eslint-disable-next-line n8n-local-rules/misplaced-n8n-typeorm-import // eslint-disable-next-line n8n-local-rules/misplaced-n8n-typeorm-import
import { In } from '@n8n/typeorm'; import { In } from '@n8n/typeorm';
import { UnexpectedError } from 'n8n-workflow'; import { UnexpectedError } from 'n8n-workflow';
import { SharedCredentialsRepository } from '@/databases/repositories/shared-credentials.repository';
import { SharedWorkflowRepository } from '@/databases/repositories/shared-workflow.repository';
/** /**
* Check if a user has the required scopes. The check can be: * Check if a user has the required scopes. The check can be:
* *

View File

@@ -4,6 +4,7 @@ import {
SharedCredentials, SharedCredentials,
CredentialsRepository, CredentialsRepository,
ProjectRepository, ProjectRepository,
SharedCredentialsRepository,
} from '@n8n/db'; } from '@n8n/db';
import { Container } from '@n8n/di'; import { Container } from '@n8n/di';
import { Credentials } from 'n8n-core'; import { Credentials } from 'n8n-core';
@@ -14,7 +15,6 @@ import type {
INodePropertyOptions, INodePropertyOptions,
} from 'n8n-workflow'; } from 'n8n-workflow';
import { SharedCredentialsRepository } from '@/databases/repositories/shared-credentials.repository';
import * as Db from '@/db'; import * as Db from '@/db';
import { EventService } from '@/events/event.service'; import { EventService } from '@/events/event.service';
import { ExternalHooks } from '@/external-hooks'; import { ExternalHooks } from '@/external-hooks';

View File

@@ -1,11 +1,16 @@
import { GlobalConfig } from '@n8n/config'; import { GlobalConfig } from '@n8n/config';
import type { Project, User } from '@n8n/db'; import type { Project, User } from '@n8n/db';
import { WorkflowEntity, WorkflowTagMapping, SharedWorkflow, TagRepository } from '@n8n/db'; import {
WorkflowEntity,
WorkflowTagMapping,
SharedWorkflow,
TagRepository,
SharedWorkflowRepository,
} from '@n8n/db';
import { Container } from '@n8n/di'; import { Container } from '@n8n/di';
import type { Scope, WorkflowSharingRole } from '@n8n/permissions'; import type { Scope, WorkflowSharingRole } from '@n8n/permissions';
import type { WorkflowId } from 'n8n-workflow'; import type { WorkflowId } from 'n8n-workflow';
import { SharedWorkflowRepository } from '@/databases/repositories/shared-workflow.repository';
import { WorkflowRepository } from '@/databases/repositories/workflow.repository'; import { WorkflowRepository } from '@/databases/repositories/workflow.repository';
import * as Db from '@/db'; import * as Db from '@/db';
import { License } from '@/license'; import { License } from '@/license';

View File

@@ -1,9 +1,9 @@
import type { User } from '@n8n/db';
import { WorkflowEntity } from '@n8n/db'; import { WorkflowEntity } from '@n8n/db';
import type { User } from '@n8n/db';
import type { SharedWorkflowRepository } from '@n8n/db';
import { mock } from 'jest-mock-extended'; import { mock } from 'jest-mock-extended';
import type { ActivationErrorsService } from '@/activation-errors.service'; import type { ActivationErrorsService } from '@/activation-errors.service';
import type { SharedWorkflowRepository } from '@/databases/repositories/shared-workflow.repository';
import type { WorkflowRepository } from '@/databases/repositories/workflow.repository'; import type { WorkflowRepository } from '@/databases/repositories/workflow.repository';
import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { BadRequestError } from '@/errors/response-errors/bad-request.error';
import { ActiveWorkflowsService } from '@/services/active-workflows.service'; import { ActiveWorkflowsService } from '@/services/active-workflows.service';

View File

@@ -1,10 +1,10 @@
import type { SharedCredentials } from '@n8n/db'; import type { SharedCredentials } from '@n8n/db';
import { Project, SharedWorkflow, User, WorkflowEntity, ProjectRelation } from '@n8n/db'; import { Project, SharedWorkflow, User, WorkflowEntity, ProjectRelation } from '@n8n/db';
import { ProjectRelationRepository } from '@n8n/db'; import { ProjectRelationRepository } from '@n8n/db';
import { SharedWorkflowRepository } from '@n8n/db';
import { mock } from 'jest-mock-extended'; import { mock } from 'jest-mock-extended';
import { v4 as uuid } from 'uuid'; import { v4 as uuid } from 'uuid';
import { SharedWorkflowRepository } from '@/databases/repositories/shared-workflow.repository';
import { UserRepository } from '@/databases/repositories/user.repository'; import { UserRepository } from '@/databases/repositories/user.repository';
import { OwnershipService } from '@/services/ownership.service'; import { OwnershipService } from '@/services/ownership.service';
import { mockCredential, mockProject } from '@test/mock-objects'; import { mockCredential, mockProject } from '@test/mock-objects';

View File

@@ -1,10 +1,10 @@
import type { User } from '@n8n/db'; import type { User } from '@n8n/db';
import { SharedWorkflowRepository } from '@n8n/db';
import { Service } from '@n8n/di'; import { Service } from '@n8n/di';
import { hasGlobalScope } from '@n8n/permissions'; import { hasGlobalScope } from '@n8n/permissions';
import { Logger } from 'n8n-core'; import { Logger } from 'n8n-core';
import { ActivationErrorsService } from '@/activation-errors.service'; import { ActivationErrorsService } from '@/activation-errors.service';
import { SharedWorkflowRepository } from '@/databases/repositories/shared-workflow.repository';
import { WorkflowRepository } from '@/databases/repositories/workflow.repository'; import { WorkflowRepository } from '@/databases/repositories/workflow.repository';
import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { BadRequestError } from '@/errors/response-errors/bad-request.error';
import { WorkflowFinderService } from '@/workflows/workflow-finder.service'; import { WorkflowFinderService } from '@/workflows/workflow-finder.service';

View File

@@ -1,8 +1,7 @@
import type { Project, User, ListQueryDb } from '@n8n/db'; import type { Project, User, ListQueryDb } from '@n8n/db';
import { ProjectRelationRepository, ProjectRepository } from '@n8n/db'; import { ProjectRelationRepository, ProjectRepository, SharedWorkflowRepository } from '@n8n/db';
import { Service } from '@n8n/di'; import { Service } from '@n8n/di';
import { SharedWorkflowRepository } from '@/databases/repositories/shared-workflow.repository';
import { UserRepository } from '@/databases/repositories/user.repository'; import { UserRepository } from '@/databases/repositories/user.repository';
import { CacheService } from '@/services/cache/cache.service'; import { CacheService } from '@/services/cache/cache.service';

View File

@@ -1,7 +1,14 @@
import type { CreateProjectDto, ProjectType, UpdateProjectDto } from '@n8n/api-types'; import type { CreateProjectDto, ProjectType, UpdateProjectDto } from '@n8n/api-types';
import { UNLIMITED_LICENSE_QUOTA } from '@n8n/constants'; import { UNLIMITED_LICENSE_QUOTA } from '@n8n/constants';
import type { User } from '@n8n/db'; import type { User } from '@n8n/db';
import { Project, ProjectRelation, ProjectRelationRepository, ProjectRepository } from '@n8n/db'; import {
Project,
ProjectRelation,
ProjectRelationRepository,
ProjectRepository,
SharedCredentialsRepository,
SharedWorkflowRepository,
} from '@n8n/db';
import { Container, Service } from '@n8n/di'; import { Container, Service } from '@n8n/di';
import { hasGlobalScope, rolesWithScope, type Scope, type ProjectRole } from '@n8n/permissions'; import { hasGlobalScope, rolesWithScope, type Scope, type ProjectRole } from '@n8n/permissions';
// eslint-disable-next-line n8n-local-rules/misplaced-n8n-typeorm-import // eslint-disable-next-line n8n-local-rules/misplaced-n8n-typeorm-import
@@ -10,8 +17,6 @@ import type { FindOptionsWhere, EntityManager } from '@n8n/typeorm';
import { In, Not } from '@n8n/typeorm'; import { In, Not } from '@n8n/typeorm';
import { UserError } from 'n8n-workflow'; import { UserError } from 'n8n-workflow';
import { SharedCredentialsRepository } from '@/databases/repositories/shared-credentials.repository';
import { SharedWorkflowRepository } from '@/databases/repositories/shared-workflow.repository';
import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { BadRequestError } from '@/errors/response-errors/bad-request.error';
import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { ForbiddenError } from '@/errors/response-errors/forbidden.error';
import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { NotFoundError } from '@/errors/response-errors/not-found.error';

View File

@@ -1,4 +1,5 @@
import type { SharedWorkflow, User } from '@n8n/db'; import type { SharedWorkflow, User } from '@n8n/db';
import { SharedWorkflowRepository } from '@n8n/db';
import { Service } from '@n8n/di'; import { Service } from '@n8n/di';
import { hasGlobalScope, rolesWithScope, type Scope } from '@n8n/permissions'; import { hasGlobalScope, rolesWithScope, type Scope } from '@n8n/permissions';
// eslint-disable-next-line n8n-local-rules/misplaced-n8n-typeorm-import // eslint-disable-next-line n8n-local-rules/misplaced-n8n-typeorm-import
@@ -6,8 +7,6 @@ import type { EntityManager, FindOptionsWhere } from '@n8n/typeorm';
// eslint-disable-next-line n8n-local-rules/misplaced-n8n-typeorm-import // eslint-disable-next-line n8n-local-rules/misplaced-n8n-typeorm-import
import { In } from '@n8n/typeorm'; import { In } from '@n8n/typeorm';
import { SharedWorkflowRepository } from '@/databases/repositories/shared-workflow.repository';
@Service() @Service()
export class WorkflowFinderService { export class WorkflowFinderService {
constructor(private readonly sharedWorkflowRepository: SharedWorkflowRepository) {} constructor(private readonly sharedWorkflowRepository: SharedWorkflowRepository) {}

View File

@@ -1,5 +1,5 @@
import { ProjectRelationRepository } from '@n8n/db';
import type { User } from '@n8n/db'; import type { User } from '@n8n/db';
import { ProjectRelationRepository, SharedWorkflowRepository } from '@n8n/db';
import { Service } from '@n8n/di'; import { Service } from '@n8n/di';
import { import {
hasGlobalScope, hasGlobalScope,
@@ -11,7 +11,6 @@ import {
// eslint-disable-next-line n8n-local-rules/misplaced-n8n-typeorm-import // eslint-disable-next-line n8n-local-rules/misplaced-n8n-typeorm-import
import { In } from '@n8n/typeorm'; import { In } from '@n8n/typeorm';
import { SharedWorkflowRepository } from '@/databases/repositories/shared-workflow.repository';
import { RoleService } from '@/services/role.service'; import { RoleService } from '@/services/role.service';
export type ShareWorkflowOptions = export type ShareWorkflowOptions =

View File

@@ -5,7 +5,14 @@ import type {
WorkflowWithSharingsAndCredentials, WorkflowWithSharingsAndCredentials,
WorkflowWithSharingsMetaDataAndCredentials, WorkflowWithSharingsMetaDataAndCredentials,
} from '@n8n/db'; } from '@n8n/db';
import { Folder, Project, SharedWorkflow, CredentialsRepository, FolderRepository } from '@n8n/db'; import {
Folder,
Project,
SharedWorkflow,
CredentialsRepository,
FolderRepository,
SharedWorkflowRepository,
} from '@n8n/db';
import { Service } from '@n8n/di'; import { Service } from '@n8n/di';
// eslint-disable-next-line n8n-local-rules/misplaced-n8n-typeorm-import // eslint-disable-next-line n8n-local-rules/misplaced-n8n-typeorm-import
import { In, type EntityManager } from '@n8n/typeorm'; import { In, type EntityManager } from '@n8n/typeorm';
@@ -18,7 +25,6 @@ import { ActiveWorkflowManager } from '@/active-workflow-manager';
import { CredentialsFinderService } from '@/credentials/credentials-finder.service'; import { CredentialsFinderService } from '@/credentials/credentials-finder.service';
import { CredentialsService } from '@/credentials/credentials.service'; import { CredentialsService } from '@/credentials/credentials.service';
import { EnterpriseCredentialsService } from '@/credentials/credentials.service.ee'; import { EnterpriseCredentialsService } from '@/credentials/credentials.service.ee';
import { SharedWorkflowRepository } from '@/databases/repositories/shared-workflow.repository';
import { WorkflowRepository } from '@/databases/repositories/workflow.repository'; import { WorkflowRepository } from '@/databases/repositories/workflow.repository';
import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { BadRequestError } from '@/errors/response-errors/bad-request.error';
import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { NotFoundError } from '@/errors/response-errors/not-found.error';

View File

@@ -1,6 +1,11 @@
import { GlobalConfig } from '@n8n/config'; import { GlobalConfig } from '@n8n/config';
import type { User, WorkflowEntity, ListQueryDb } from '@n8n/db'; import type { User, WorkflowEntity, ListQueryDb } from '@n8n/db';
import { SharedWorkflow, ExecutionRepository, WorkflowTagMappingRepository } from '@n8n/db'; import {
SharedWorkflow,
ExecutionRepository,
WorkflowTagMappingRepository,
SharedWorkflowRepository,
} from '@n8n/db';
import { Service } from '@n8n/di'; import { Service } from '@n8n/di';
import type { Scope } from '@n8n/permissions'; import type { Scope } from '@n8n/permissions';
// eslint-disable-next-line n8n-local-rules/misplaced-n8n-typeorm-import // eslint-disable-next-line n8n-local-rules/misplaced-n8n-typeorm-import
@@ -16,7 +21,6 @@ import { v4 as uuid } from 'uuid';
import { ActiveWorkflowManager } from '@/active-workflow-manager'; import { ActiveWorkflowManager } from '@/active-workflow-manager';
import config from '@/config'; import config from '@/config';
import { SharedWorkflowRepository } from '@/databases/repositories/shared-workflow.repository';
import type { WorkflowFolderUnionFull } from '@/databases/repositories/workflow.repository'; import type { WorkflowFolderUnionFull } from '@/databases/repositories/workflow.repository';
import { WorkflowRepository } from '@/databases/repositories/workflow.repository'; import { WorkflowRepository } from '@/databases/repositories/workflow.repository';
import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { BadRequestError } from '@/errors/response-errors/bad-request.error';

View File

@@ -11,6 +11,7 @@ import {
ProjectRelationRepository, ProjectRelationRepository,
ProjectRepository, ProjectRepository,
TagRepository, TagRepository,
SharedWorkflowRepository,
} from '@n8n/db'; } from '@n8n/db';
import { import {
Body, Body,
@@ -33,7 +34,6 @@ import { Logger } from 'n8n-core';
import { UnexpectedError } from 'n8n-workflow'; import { UnexpectedError } from 'n8n-workflow';
import { v4 as uuid } from 'uuid'; import { v4 as uuid } from 'uuid';
import { SharedWorkflowRepository } from '@/databases/repositories/shared-workflow.repository';
import { WorkflowRepository } from '@/databases/repositories/workflow.repository'; import { WorkflowRepository } from '@/databases/repositories/workflow.repository';
import * as Db from '@/db'; import * as Db from '@/db';
import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { BadRequestError } from '@/errors/response-errors/bad-request.error';

View File

@@ -2,13 +2,13 @@ import type { Project } from '@n8n/db';
import type { User } from '@n8n/db'; import type { User } from '@n8n/db';
import { CredentialsRepository } from '@n8n/db'; import { CredentialsRepository } from '@n8n/db';
import { ProjectRepository } from '@n8n/db'; import { ProjectRepository } from '@n8n/db';
import { SharedCredentialsRepository } from '@n8n/db';
import { Container } from '@n8n/di'; import { Container } from '@n8n/di';
import { randomUUID } from 'crypto'; import { randomUUID } from 'crypto';
import { mock } from 'jest-mock-extended'; import { mock } from 'jest-mock-extended';
import { OPEN_AI_API_CREDENTIAL_TYPE } from 'n8n-workflow'; import { OPEN_AI_API_CREDENTIAL_TYPE } from 'n8n-workflow';
import { FREE_AI_CREDITS_CREDENTIAL_NAME } from '@/constants'; import { FREE_AI_CREDITS_CREDENTIAL_NAME } from '@/constants';
import { SharedCredentialsRepository } from '@/databases/repositories/shared-credentials.repository';
import { UserRepository } from '@/databases/repositories/user.repository'; import { UserRepository } from '@/databases/repositories/user.repository';
import { AiService } from '@/services/ai.service'; import { AiService } from '@/services/ai.service';

View File

@@ -1,11 +1,11 @@
import { CredentialsRepository } from '@n8n/db'; import { CredentialsRepository } from '@n8n/db';
import { SharedCredentialsRepository } from '@n8n/db';
import { SharedWorkflowRepository } from '@n8n/db';
import { Container } from '@n8n/di'; import { Container } from '@n8n/di';
import { EntityNotFoundError } from '@n8n/typeorm'; import { EntityNotFoundError } from '@n8n/typeorm';
import { v4 as uuid } from 'uuid'; import { v4 as uuid } from 'uuid';
import { Reset } from '@/commands/ldap/reset'; import { Reset } from '@/commands/ldap/reset';
import { SharedCredentialsRepository } from '@/databases/repositories/shared-credentials.repository';
import { SharedWorkflowRepository } from '@/databases/repositories/shared-workflow.repository';
import { WorkflowRepository } from '@/databases/repositories/workflow.repository'; import { WorkflowRepository } from '@/databases/repositories/workflow.repository';
import { getLdapSynchronizations, saveLdapSynchronization } from '@/ldap.ee/helpers.ee'; import { getLdapSynchronizations, saveLdapSynchronization } from '@/ldap.ee/helpers.ee';
import { LdapService } from '@/ldap.ee/ldap.service.ee'; import { LdapService } from '@/ldap.ee/ldap.service.ee';

View File

@@ -1,11 +1,11 @@
import { CredentialsEntity } from '@n8n/db'; import { CredentialsEntity } from '@n8n/db';
import { CredentialsRepository } from '@n8n/db'; import { CredentialsRepository } from '@n8n/db';
import { SharedCredentialsRepository } from '@n8n/db';
import { SharedWorkflowRepository } from '@n8n/db';
import { Container } from '@n8n/di'; import { Container } from '@n8n/di';
import { Reset } from '@/commands/user-management/reset'; import { Reset } from '@/commands/user-management/reset';
import { SettingsRepository } from '@/databases/repositories/settings.repository'; import { SettingsRepository } from '@/databases/repositories/settings.repository';
import { SharedCredentialsRepository } from '@/databases/repositories/shared-credentials.repository';
import { SharedWorkflowRepository } from '@/databases/repositories/shared-workflow.repository';
import { UserRepository } from '@/databases/repositories/user.repository'; import { UserRepository } from '@/databases/repositories/user.repository';
import { LoadNodesAndCredentials } from '@/load-nodes-and-credentials'; import { LoadNodesAndCredentials } from '@/load-nodes-and-credentials';
import { NodeTypes } from '@/node-types'; import { NodeTypes } from '@/node-types';

View File

@@ -2,13 +2,13 @@ import type { Project } from '@n8n/db';
import type { User } from '@n8n/db'; import type { User } from '@n8n/db';
import type { ListQueryDb } from '@n8n/db'; import type { ListQueryDb } from '@n8n/db';
import { ProjectRepository } from '@n8n/db'; import { ProjectRepository } from '@n8n/db';
import { SharedCredentialsRepository } from '@n8n/db';
import { Container } from '@n8n/di'; import { Container } from '@n8n/di';
import type { ProjectRole } from '@n8n/permissions'; import type { ProjectRole } from '@n8n/permissions';
import { In } from '@n8n/typeorm'; import { In } from '@n8n/typeorm';
import config from '@/config'; import config from '@/config';
import { CredentialsService } from '@/credentials/credentials.service'; import { CredentialsService } from '@/credentials/credentials.service';
import { SharedCredentialsRepository } from '@/databases/repositories/shared-credentials.repository';
import { ProjectService } from '@/services/project.service.ee'; import { ProjectService } from '@/services/project.service.ee';
import { UserManagementMailer } from '@/user-management/email'; import { UserManagementMailer } from '@/user-management/email';
import { createWorkflow, shareWorkflowWithUsers } from '@test-integration/db/workflows'; import { createWorkflow, shareWorkflowWithUsers } from '@test-integration/db/workflows';

View File

@@ -4,6 +4,7 @@ import type { User } from '@n8n/db';
import type { ListQueryDb } from '@n8n/db'; import type { ListQueryDb } from '@n8n/db';
import { CredentialsRepository } from '@n8n/db'; import { CredentialsRepository } from '@n8n/db';
import { ProjectRepository } from '@n8n/db'; import { ProjectRepository } from '@n8n/db';
import { SharedCredentialsRepository } from '@n8n/db';
import { Container } from '@n8n/di'; import { Container } from '@n8n/di';
import type { Scope } from '@sentry/node'; import type { Scope } from '@sentry/node';
import * as a from 'assert'; import * as a from 'assert';
@@ -14,7 +15,6 @@ import { randomString } from 'n8n-workflow';
import { CREDENTIAL_BLANKING_VALUE } from '@/constants'; import { CREDENTIAL_BLANKING_VALUE } from '@/constants';
import { CredentialsService } from '@/credentials/credentials.service'; import { CredentialsService } from '@/credentials/credentials.service';
import { SharedCredentialsRepository } from '@/databases/repositories/shared-credentials.repository';
import { CredentialsTester } from '@/services/credentials-tester.service'; import { CredentialsTester } from '@/services/credentials-tester.service';
import { import {

View File

@@ -2,6 +2,7 @@ import type { SourceControlledFile } from '@n8n/api-types';
import { CredentialsRepository } from '@n8n/db'; import { CredentialsRepository } from '@n8n/db';
import { FolderRepository } from '@n8n/db'; import { FolderRepository } from '@n8n/db';
import { ProjectRepository } from '@n8n/db'; import { ProjectRepository } from '@n8n/db';
import { SharedCredentialsRepository } from '@n8n/db';
import { Container } from '@n8n/di'; import { Container } from '@n8n/di';
import { mock } from 'jest-mock-extended'; import { mock } from 'jest-mock-extended';
import { Cipher } from 'n8n-core'; import { Cipher } from 'n8n-core';
@@ -10,7 +11,6 @@ import * as utils from 'n8n-workflow';
import { nanoid } from 'nanoid'; import { nanoid } from 'nanoid';
import fsp from 'node:fs/promises'; import fsp from 'node:fs/promises';
import { SharedCredentialsRepository } from '@/databases/repositories/shared-credentials.repository';
import { UserRepository } from '@/databases/repositories/user.repository'; import { UserRepository } from '@/databases/repositories/user.repository';
import { SourceControlImportService } from '@/environments.ee/source-control/source-control-import.service.ee'; import { SourceControlImportService } from '@/environments.ee/source-control/source-control-import.service.ee';
import type { ExportableCredential } from '@/environments.ee/source-control/types/exportable-credential'; import type { ExportableCredential } from '@/environments.ee/source-control/types/exportable-credential';

View File

@@ -1,13 +1,13 @@
import type { Project } from '@n8n/db'; import type { Project } from '@n8n/db';
import type { User } from '@n8n/db'; import type { User } from '@n8n/db';
import { ProjectRepository } from '@n8n/db'; import { ProjectRepository } from '@n8n/db';
import { SharedCredentialsRepository } from '@n8n/db';
import { SharedWorkflowRepository } from '@n8n/db';
import { Container } from '@n8n/di'; import { Container } from '@n8n/di';
import type { INode, IWorkflowBase } from 'n8n-workflow'; import type { INode, IWorkflowBase } from 'n8n-workflow';
import { randomInt } from 'n8n-workflow'; import { randomInt } from 'n8n-workflow';
import { v4 as uuid } from 'uuid'; import { v4 as uuid } from 'uuid';
import { SharedCredentialsRepository } from '@/databases/repositories/shared-credentials.repository';
import { SharedWorkflowRepository } from '@/databases/repositories/shared-workflow.repository';
import { WorkflowRepository } from '@/databases/repositories/workflow.repository'; import { WorkflowRepository } from '@/databases/repositories/workflow.repository';
import { CredentialsPermissionChecker } from '@/executions/pre-execution-checks'; import { CredentialsPermissionChecker } from '@/executions/pre-execution-checks';
import { LoadNodesAndCredentials } from '@/load-nodes-and-credentials'; import { LoadNodesAndCredentials } from '@/load-nodes-and-credentials';

View File

@@ -3,12 +3,12 @@ import type { User } from '@n8n/db';
import { TagEntity } from '@n8n/db'; import { TagEntity } from '@n8n/db';
import { CredentialsRepository } from '@n8n/db'; import { CredentialsRepository } from '@n8n/db';
import { TagRepository } from '@n8n/db'; import { TagRepository } from '@n8n/db';
import { SharedWorkflowRepository } from '@n8n/db';
import { Container } from '@n8n/di'; import { Container } from '@n8n/di';
import { mock } from 'jest-mock-extended'; import { mock } from 'jest-mock-extended';
import type { INode } from 'n8n-workflow'; import type { INode } from 'n8n-workflow';
import { v4 as uuid } from 'uuid'; import { v4 as uuid } from 'uuid';
import { SharedWorkflowRepository } from '@/databases/repositories/shared-workflow.repository';
import { WorkflowRepository } from '@/databases/repositories/workflow.repository'; import { WorkflowRepository } from '@/databases/repositories/workflow.repository';
import { ImportService } from '@/services/import.service'; import { ImportService } from '@/services/import.service';

View File

@@ -2,13 +2,13 @@ import type { Project } from '@n8n/db';
import { FolderRepository } from '@n8n/db'; import { FolderRepository } from '@n8n/db';
import { ProjectRelationRepository } from '@n8n/db'; import { ProjectRelationRepository } from '@n8n/db';
import { ProjectRepository } from '@n8n/db'; import { ProjectRepository } from '@n8n/db';
import { SharedCredentialsRepository } from '@n8n/db';
import { SharedWorkflowRepository } from '@n8n/db';
import { Container } from '@n8n/di'; import { Container } from '@n8n/di';
import { getRoleScopes, type GlobalRole, type ProjectRole, type Scope } from '@n8n/permissions'; import { getRoleScopes, type GlobalRole, type ProjectRole, type Scope } from '@n8n/permissions';
import { EntityNotFoundError } from '@n8n/typeorm'; import { EntityNotFoundError } from '@n8n/typeorm';
import { ActiveWorkflowManager } from '@/active-workflow-manager'; import { ActiveWorkflowManager } from '@/active-workflow-manager';
import { SharedCredentialsRepository } from '@/databases/repositories/shared-credentials.repository';
import { SharedWorkflowRepository } from '@/databases/repositories/shared-workflow.repository';
import { getWorkflowById } from '@/public-api/v1/handlers/workflows/workflows.service'; import { getWorkflowById } from '@/public-api/v1/handlers/workflows/workflows.service';
import { CacheService } from '@/services/cache/cache.service'; import { CacheService } from '@/services/cache/cache.service';
import { createFolder } from '@test-integration/db/folders'; import { createFolder } from '@test-integration/db/folders';

View File

@@ -1,6 +1,6 @@
import { SharedWorkflowRepository } from '@n8n/db';
import { Container } from '@n8n/di'; import { Container } from '@n8n/di';
import { SharedWorkflowRepository } from '@/databases/repositories/shared-workflow.repository';
import { ProjectService } from '@/services/project.service.ee'; import { ProjectService } from '@/services/project.service.ee';
import { linkUserToProject, createTeamProject } from './shared/db/projects'; import { linkUserToProject, createTeamProject } from './shared/db/projects';

View File

@@ -1,9 +1,9 @@
import type { User } from '@n8n/db'; import type { User } from '@n8n/db';
import { CredentialsRepository } from '@n8n/db'; import { CredentialsRepository } from '@n8n/db';
import { SharedCredentialsRepository } from '@n8n/db';
import { Container } from '@n8n/di'; import { Container } from '@n8n/di';
import { randomString } from 'n8n-workflow'; import { randomString } from 'n8n-workflow';
import { SharedCredentialsRepository } from '@/databases/repositories/shared-credentials.repository';
import { createTeamProject } from '@test-integration/db/projects'; import { createTeamProject } from '@test-integration/db/projects';
import { import {

View File

@@ -3,12 +3,12 @@ import { ApiKeyRepository } from '@n8n/db';
import { CredentialsRepository } from '@n8n/db'; import { CredentialsRepository } from '@n8n/db';
import { ProjectRepository } from '@n8n/db'; import { ProjectRepository } from '@n8n/db';
import { TagRepository } from '@n8n/db'; import { TagRepository } from '@n8n/db';
import { SharedCredentialsRepository } from '@n8n/db';
import { SharedWorkflowRepository } from '@n8n/db';
import { Container } from '@n8n/di'; import { Container } from '@n8n/di';
import { randomString } from 'n8n-workflow'; import { randomString } from 'n8n-workflow';
import validator from 'validator'; import validator from 'validator';
import { SharedCredentialsRepository } from '@/databases/repositories/shared-credentials.repository';
import { SharedWorkflowRepository } from '@/databases/repositories/shared-workflow.repository';
import { getOwnerOnlyApiKeyScopes } from '@/public-api/permissions.ee'; import { getOwnerOnlyApiKeyScopes } from '@/public-api/permissions.ee';
import { affixRoleToSaveCredential, createCredentials } from '@test-integration/db/credentials'; import { affixRoleToSaveCredential, createCredentials } from '@test-integration/db/credentials';
import { createErrorExecution, createSuccessfulExecution } from '@test-integration/db/executions'; import { createErrorExecution, createSuccessfulExecution } from '@test-integration/db/executions';

View File

@@ -4,13 +4,13 @@ import type { TagEntity } from '@n8n/db';
import type { User } from '@n8n/db'; import type { User } from '@n8n/db';
import { ProjectRepository } from '@n8n/db'; import { ProjectRepository } from '@n8n/db';
import { WorkflowHistoryRepository } from '@n8n/db'; import { WorkflowHistoryRepository } from '@n8n/db';
import { SharedWorkflowRepository } from '@n8n/db';
import { Container } from '@n8n/di'; import { Container } from '@n8n/di';
import { InstanceSettings } from 'n8n-core'; import { InstanceSettings } from 'n8n-core';
import type { INode } from 'n8n-workflow'; import type { INode } from 'n8n-workflow';
import { ActiveWorkflowManager } from '@/active-workflow-manager'; import { ActiveWorkflowManager } from '@/active-workflow-manager';
import { STARTING_NODES } from '@/constants'; import { STARTING_NODES } from '@/constants';
import { SharedWorkflowRepository } from '@/databases/repositories/shared-workflow.repository';
import { ExecutionService } from '@/executions/execution.service'; import { ExecutionService } from '@/executions/execution.service';
import { ProjectService } from '@/services/project.service.ee'; import { ProjectService } from '@/services/project.service.ee';
import { Telemetry } from '@/telemetry'; import { Telemetry } from '@/telemetry';

View File

@@ -4,11 +4,10 @@ import type { ICredentialsDb } from '@n8n/db';
import { CredentialsEntity } from '@n8n/db'; import { CredentialsEntity } from '@n8n/db';
import { CredentialsRepository } from '@n8n/db'; import { CredentialsRepository } from '@n8n/db';
import { ProjectRepository } from '@n8n/db'; import { ProjectRepository } from '@n8n/db';
import { SharedCredentialsRepository } from '@n8n/db';
import { Container } from '@n8n/di'; import { Container } from '@n8n/di';
import type { CredentialSharingRole } from '@n8n/permissions'; import type { CredentialSharingRole } from '@n8n/permissions';
import { SharedCredentialsRepository } from '@/databases/repositories/shared-credentials.repository';
import type { CredentialPayload } from '../types'; import type { CredentialPayload } from '../types';
export async function encryptCredentialData( export async function encryptCredentialData(

View File

@@ -3,6 +3,7 @@ import type { IWorkflowDb } from '@n8n/db';
import { Project } from '@n8n/db'; import { Project } from '@n8n/db';
import { User } from '@n8n/db'; import { User } from '@n8n/db';
import { ProjectRepository } from '@n8n/db'; import { ProjectRepository } from '@n8n/db';
import { SharedWorkflowRepository } from '@n8n/db';
import { Container } from '@n8n/di'; import { Container } from '@n8n/di';
import type { WorkflowSharingRole } from '@n8n/permissions'; import type { WorkflowSharingRole } from '@n8n/permissions';
import type { DeepPartial } from '@n8n/typeorm'; import type { DeepPartial } from '@n8n/typeorm';
@@ -10,7 +11,6 @@ import type { IWorkflowBase } from 'n8n-workflow';
import { NodeConnectionTypes } from 'n8n-workflow'; import { NodeConnectionTypes } from 'n8n-workflow';
import { v4 as uuid } from 'uuid'; import { v4 as uuid } from 'uuid';
import { SharedWorkflowRepository } from '@/databases/repositories/shared-workflow.repository';
import { WorkflowRepository } from '@/databases/repositories/workflow.repository'; import { WorkflowRepository } from '@/databases/repositories/workflow.repository';
export async function createManyWorkflows( export async function createManyWorkflows(

View File

@@ -2,13 +2,13 @@ import type { User } from '@n8n/db';
import { FolderRepository } from '@n8n/db'; import { FolderRepository } from '@n8n/db';
import { ProjectRelationRepository } from '@n8n/db'; import { ProjectRelationRepository } from '@n8n/db';
import { ProjectRepository } from '@n8n/db'; import { ProjectRepository } from '@n8n/db';
import { SharedCredentialsRepository } from '@n8n/db';
import { SharedWorkflowRepository } from '@n8n/db';
import { Container } from '@n8n/di'; import { Container } from '@n8n/di';
import { v4 as uuid } from 'uuid'; import { v4 as uuid } from 'uuid';
import { RESPONSE_ERROR_MESSAGES } from '@/constants'; import { RESPONSE_ERROR_MESSAGES } from '@/constants';
import { UsersController } from '@/controllers/users.controller'; import { UsersController } from '@/controllers/users.controller';
import { SharedCredentialsRepository } from '@/databases/repositories/shared-credentials.repository';
import { SharedWorkflowRepository } from '@/databases/repositories/shared-workflow.repository';
import { UserRepository } from '@/databases/repositories/user.repository'; import { UserRepository } from '@/databases/repositories/user.repository';
import { ExecutionService } from '@/executions/execution.service'; import { ExecutionService } from '@/executions/execution.service';
import { CacheService } from '@/services/cache/cache.service'; import { CacheService } from '@/services/cache/cache.service';

View File

@@ -1,9 +1,9 @@
import { CredentialsEntity } from '@n8n/db'; import { CredentialsEntity } from '@n8n/db';
import { CredentialsRepository } from '@n8n/db'; import { CredentialsRepository } from '@n8n/db';
import { SharedWorkflowRepository } from '@n8n/db';
import { Container } from '@n8n/di'; import { Container } from '@n8n/di';
import { mock } from 'jest-mock-extended'; import { mock } from 'jest-mock-extended';
import { SharedWorkflowRepository } from '@/databases/repositories/shared-workflow.repository';
import { WorkflowRepository } from '@/databases/repositories/workflow.repository'; import { WorkflowRepository } from '@/databases/repositories/workflow.repository';
import { Telemetry } from '@/telemetry'; import { Telemetry } from '@/telemetry';
import { EnterpriseWorkflowService } from '@/workflows/workflow.service.ee'; import { EnterpriseWorkflowService } from '@/workflows/workflow.service.ee';

View File

@@ -1,8 +1,8 @@
import { SharedWorkflowRepository } from '@n8n/db';
import { Container } from '@n8n/di'; import { Container } from '@n8n/di';
import { mock } from 'jest-mock-extended'; import { mock } from 'jest-mock-extended';
import { ActiveWorkflowManager } from '@/active-workflow-manager'; import { ActiveWorkflowManager } from '@/active-workflow-manager';
import { SharedWorkflowRepository } from '@/databases/repositories/shared-workflow.repository';
import { WorkflowRepository } from '@/databases/repositories/workflow.repository'; import { WorkflowRepository } from '@/databases/repositories/workflow.repository';
import { MessageEventBus } from '@/eventbus/message-event-bus/message-event-bus'; import { MessageEventBus } from '@/eventbus/message-event-bus/message-event-bus';
import { Telemetry } from '@/telemetry'; import { Telemetry } from '@/telemetry';

View File

@@ -3,6 +3,7 @@ import type { User } from '@n8n/db';
import type { WorkflowWithSharingsMetaDataAndCredentials } from '@n8n/db'; import type { WorkflowWithSharingsMetaDataAndCredentials } from '@n8n/db';
import { ProjectRepository } from '@n8n/db'; import { ProjectRepository } from '@n8n/db';
import { WorkflowHistoryRepository } from '@n8n/db'; import { WorkflowHistoryRepository } from '@n8n/db';
import { SharedWorkflowRepository } from '@n8n/db';
import { Container } from '@n8n/di'; import { Container } from '@n8n/di';
import type { ProjectRole } from '@n8n/permissions'; import type { ProjectRole } from '@n8n/permissions';
import { ApplicationError, WorkflowActivationError, type INode } from 'n8n-workflow'; import { ApplicationError, WorkflowActivationError, type INode } from 'n8n-workflow';
@@ -10,7 +11,6 @@ import { v4 as uuid } from 'uuid';
import { ActiveWorkflowManager } from '@/active-workflow-manager'; import { ActiveWorkflowManager } from '@/active-workflow-manager';
import config from '@/config'; import config from '@/config';
import { SharedWorkflowRepository } from '@/databases/repositories/shared-workflow.repository';
import { WorkflowRepository } from '@/databases/repositories/workflow.repository'; import { WorkflowRepository } from '@/databases/repositories/workflow.repository';
import { UserManagementMailer } from '@/user-management/email'; import { UserManagementMailer } from '@/user-management/email';
import { mockInstance } from '@test/mocking'; import { mockInstance } from '@test/mocking';

View File

@@ -2,6 +2,7 @@ import type { User } from '@n8n/db';
import type { ListQueryDb } from '@n8n/db'; import type { ListQueryDb } from '@n8n/db';
import { ProjectRepository } from '@n8n/db'; import { ProjectRepository } from '@n8n/db';
import { WorkflowHistoryRepository } from '@n8n/db'; import { WorkflowHistoryRepository } from '@n8n/db';
import { SharedWorkflowRepository } from '@n8n/db';
import { Container } from '@n8n/di'; import { Container } from '@n8n/di';
import type { Scope } from '@n8n/permissions'; import type { Scope } from '@n8n/permissions';
import { DateTime } from 'luxon'; import { DateTime } from 'luxon';
@@ -9,7 +10,6 @@ import { PROJECT_ROOT, type INode, type IPinData, type IWorkflowBase } from 'n8n
import { v4 as uuid } from 'uuid'; import { v4 as uuid } from 'uuid';
import { ActiveWorkflowManager } from '@/active-workflow-manager'; import { ActiveWorkflowManager } from '@/active-workflow-manager';
import { SharedWorkflowRepository } from '@/databases/repositories/shared-workflow.repository';
import type { WorkflowFolderUnionFull } from '@/databases/repositories/workflow.repository'; import type { WorkflowFolderUnionFull } from '@/databases/repositories/workflow.repository';
import { WorkflowRepository } from '@/databases/repositories/workflow.repository'; import { WorkflowRepository } from '@/databases/repositories/workflow.repository';
import { License } from '@/license'; import { License } from '@/license';