From b79a7eaa4c085944bfd3bc763473250441661796 Mon Sep 17 00:00:00 2001 From: Eugene Molodkin Date: Thu, 7 Nov 2024 12:16:44 +0100 Subject: [PATCH] wip: renaming test definition files to have ee suffix --- .../test-definition.repository.ts | 60 ---------------- .../evaluation/test-definitions.controller.ts | 72 ------------------- ...vice.ts => test-definitions.service.ee.ts} | 4 +- .../src/evaluation/test-definitions.types.ts | 29 -------- 4 files changed, 2 insertions(+), 163 deletions(-) delete mode 100644 packages/cli/src/databases/repositories/test-definition.repository.ts delete mode 100644 packages/cli/src/evaluation/test-definitions.controller.ts rename packages/cli/src/evaluation/{test-definitions.service.ts => test-definitions.service.ee.ts} (97%) delete mode 100644 packages/cli/src/evaluation/test-definitions.types.ts diff --git a/packages/cli/src/databases/repositories/test-definition.repository.ts b/packages/cli/src/databases/repositories/test-definition.repository.ts deleted file mode 100644 index 5e2cee02d2..0000000000 --- a/packages/cli/src/databases/repositories/test-definition.repository.ts +++ /dev/null @@ -1,60 +0,0 @@ -import type { FindManyOptions, FindOptionsWhere } from '@n8n/typeorm'; -import { DataSource, In, Repository } from '@n8n/typeorm'; -import { Service } from 'typedi'; - -import { TestDefinition } from '@/databases/entities/test-definition'; -import type { ListQuery } from '@/requests'; - -@Service() -export class TestDefinitionRepository extends Repository { - constructor(dataSource: DataSource) { - super(TestDefinition, dataSource.manager); - } - - async getMany(sharedWorkflowIds: string[], options?: ListQuery.Options) { - if (sharedWorkflowIds.length === 0) return { tests: [], count: 0 }; - - const where: FindOptionsWhere = { - ...options?.filter, - workflow: { - id: In(sharedWorkflowIds), - }, - }; - - const findManyOptions: FindManyOptions = { - where, - relations: ['annotationTag'], - order: { createdAt: 'DESC' }, - }; - - if (options?.take) { - findManyOptions.skip = options.skip; - findManyOptions.take = options.take; - } - - const [testDefinitions, count] = await this.findAndCount(findManyOptions); - - return { testDefinitions, count }; - } - - async getOne(id: number, sharedWorkflowIds: string[]) { - return await this.findOne({ - where: { - id, - workflow: { - id: In(sharedWorkflowIds), - }, - }, - relations: ['annotationTag'], - }); - } - - async deleteById(id: number, sharedWorkflowIds: string[]) { - return await this.delete({ - id, - workflow: { - id: In(sharedWorkflowIds), - }, - }); - } -} diff --git a/packages/cli/src/evaluation/test-definitions.controller.ts b/packages/cli/src/evaluation/test-definitions.controller.ts deleted file mode 100644 index adc52b9c47..0000000000 --- a/packages/cli/src/evaluation/test-definitions.controller.ts +++ /dev/null @@ -1,72 +0,0 @@ -import { Get, Post, Patch, RestController, Delete } from '@/decorators'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; -import { listQueryMiddleware } from '@/middlewares'; -import { getSharedWorkflowIds } from '@/public-api/v1/handlers/workflows/workflows.service'; -import { isPositiveInteger } from '@/utils'; - -import { TestDefinitionsService } from './test-definitions.service'; -import { TestDefinitionsRequest } from './test-definitions.types'; - -@RestController('/evaluation/test-definitions') -export class TestDefinitionsController { - constructor(private readonly testsService: TestDefinitionsService) {} - - @Get('/', { middlewares: listQueryMiddleware }) - async getMany(req: TestDefinitionsRequest.GetMany) { - const workflowIds = await getSharedWorkflowIds(req.user, ['workflow:read']); - - return await this.testsService.getMany(req.listQueryOptions, workflowIds); - } - - @Get('/:id') - async getOne(req: TestDefinitionsRequest.GetOne) { - if (!isPositiveInteger(req.params.id)) { - throw new BadRequestError('Test ID is not a number'); - } - - const workflowIds = await getSharedWorkflowIds(req.user, ['workflow:read']); - - return await this.testsService.findOne(Number(req.params.id), workflowIds); - } - - @Post('/') - async create(req: TestDefinitionsRequest.Create) { - const workflowIds = await getSharedWorkflowIds(req.user, ['workflow:read']); - - if (!workflowIds.includes(req.body.workflowId)) { - throw new BadRequestError('User does not have access to the workflow'); - } - - return await this.testsService.save(this.testsService.toEntity(req.body)); - } - - @Delete('/:id') - async delete(req: TestDefinitionsRequest.Delete) { - if (!isPositiveInteger(req.params.id)) { - throw new BadRequestError('Test ID is not a number'); - } - - const workflowIds = await getSharedWorkflowIds(req.user, ['workflow:read']); - - if (workflowIds.length === 0) throw new NotFoundError('Test not found'); - - return await this.testsService.delete(Number(req.params.id), workflowIds); - } - - @Patch('/:id') - async update(req: TestDefinitionsRequest.Update) { - if (!isPositiveInteger(req.params.id)) { - throw new BadRequestError('Test ID is not a number'); - } - - const workflowIds = await getSharedWorkflowIds(req.user, ['workflow:read']); - - // Fail fast if no workflows are accessible - if (workflowIds.length === 0) throw new NotFoundError('Workflow not found'); - - return await this.testsService.save( - this.testsService.toEntity({ ...req.body, id: Number(req.params.id) }), - ); - } -} diff --git a/packages/cli/src/evaluation/test-definitions.service.ts b/packages/cli/src/evaluation/test-definitions.service.ee.ts similarity index 97% rename from packages/cli/src/evaluation/test-definitions.service.ts rename to packages/cli/src/evaluation/test-definitions.service.ee.ts index 7f9014bf51..d7dde1dd62 100644 --- a/packages/cli/src/evaluation/test-definitions.service.ts +++ b/packages/cli/src/evaluation/test-definitions.service.ee.ts @@ -1,7 +1,7 @@ import { Service } from 'typedi'; -import type { TestDefinition } from '@/databases/entities/test-definition'; -import { TestDefinitionRepository } from '@/databases/repositories/test-definition.repository'; +import type { TestDefinition } from '@/databases/entities/test-definition.ee'; +import { TestDefinitionRepository } from '@/databases/repositories/test-definition.repository.ee'; import { validateEntity } from '@/generic-helpers'; import type { ListQuery } from '@/requests'; diff --git a/packages/cli/src/evaluation/test-definitions.types.ts b/packages/cli/src/evaluation/test-definitions.types.ts deleted file mode 100644 index 0322c97362..0000000000 --- a/packages/cli/src/evaluation/test-definitions.types.ts +++ /dev/null @@ -1,29 +0,0 @@ -import type { AuthenticatedRequest, ListQuery } from '@/requests'; - -// ---------------------------------- -// /test-definitions -// ---------------------------------- - -export declare namespace TestDefinitionsRequest { - namespace RouteParams { - type TestId = { - id: string; - }; - } - - type GetOne = AuthenticatedRequest; - - type GetMany = AuthenticatedRequest<{}, {}, {}, ListQuery.Params & { includeScopes?: string }> & { - listQueryOptions: ListQuery.Options; - }; - - type Create = AuthenticatedRequest<{}, {}, { name: string; workflowId: string }>; - - type Update = AuthenticatedRequest< - RouteParams.TestId, - {}, - { name?: string; evaluationWorkflowId?: string; annotationTagId?: string } - >; - - type Delete = AuthenticatedRequest; -}