From 75e87edd8714b7ec4b0cad04096f7fc7ac62714a Mon Sep 17 00:00:00 2001 From: Mathieu Collette Date: Mon, 5 Aug 2024 19:13:04 +0200 Subject: [PATCH] feat: wip --- .../server/src/app/app.controller.spec.ts | 25 ---- .../server/src/app/app.controller.ts | 13 -- .../server/src/app/app.module.ts | 21 ++- .../server/src/app/app.service.spec.ts | 22 --- .../server/src/app/app.service.ts | 8 -- apps/pathway-design/server/src/main.ts | 27 +++- .../server/src/test/index.feature | 7 - .../server/src/test/index.step.ts | 42 ------ apps/pathway-design/server/webpack.config.js | 16 ++- bun.lockb | Bin 584813 -> 585282 bytes .../service/initialize-pathway.service.ts | 4 +- .../initialize-pathway.usecase.step.ts | 4 +- .../server/pathway/business/src/index.ts | 2 +- .../business/src/lib/entities/pathway.feature | 24 ++++ .../pathway/business/src/lib/exceptions.ts | 62 +++++++++ .../presenters/pathway-presenter.port.ts | 4 +- .../value-objects/description.value-object.ts | 8 +- .../value-objects/pathway-id.value-object.ts | 4 +- .../research-field.value-object.ts | 8 +- .../lib/value-objects/title.value-object.ts | 8 +- .../initialize-pathway.controller.ts | 27 +++- .../initialize/dtos/request/body/index.dto.ts | 15 ++ .../initialize-pathway-request-body.dto.ts | 16 --- .../dtos/response/body/index.dto.ts | 10 ++ package.json | 131 +++++++++--------- 25 files changed, 282 insertions(+), 226 deletions(-) delete mode 100644 apps/pathway-design/server/src/app/app.controller.spec.ts delete mode 100644 apps/pathway-design/server/src/app/app.controller.ts delete mode 100644 apps/pathway-design/server/src/app/app.service.spec.ts delete mode 100644 apps/pathway-design/server/src/app/app.service.ts delete mode 100644 apps/pathway-design/server/src/test/index.feature delete mode 100644 apps/pathway-design/server/src/test/index.step.ts create mode 100644 libs/pathway-design/server/pathway/business/src/lib/exceptions.ts create mode 100644 libs/pathway-design/server/pathway/interface-adapters/src/lib/initialize/dtos/request/body/index.dto.ts delete mode 100644 libs/pathway-design/server/pathway/interface-adapters/src/lib/initialize/dtos/request/body/initialize-pathway-request-body.dto.ts create mode 100644 libs/pathway-design/server/pathway/interface-adapters/src/lib/initialize/dtos/response/body/index.dto.ts diff --git a/apps/pathway-design/server/src/app/app.controller.spec.ts b/apps/pathway-design/server/src/app/app.controller.spec.ts deleted file mode 100644 index b5e8a693..00000000 --- a/apps/pathway-design/server/src/app/app.controller.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { beforeAll, describe, expect, test } from 'bun:test'; -import { Test, type TestingModule } from '@nestjs/testing'; - -import { AppController } from './app.controller'; -import { AppService } from './app.service'; - -describe('AppController', () => { - let app: TestingModule; - - beforeAll(async () => { - app = await Test.createTestingModule({ - controllers: [AppController], - providers: [AppService], - }).compile(); - }); - - describe('getData', () => { - test('should return "Hello API"', () => { - const appController = app.get(AppController); - expect(appController.getData()).toStrictEqual({ - message: 'Hello API', - }); - }); - }); -}); diff --git a/apps/pathway-design/server/src/app/app.controller.ts b/apps/pathway-design/server/src/app/app.controller.ts deleted file mode 100644 index 5151f57c..00000000 --- a/apps/pathway-design/server/src/app/app.controller.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { Controller, Get, Inject } from '@nestjs/common'; - -import { AppService } from './app.service'; - -@Controller() -export class AppController { - constructor(@Inject(AppService) private readonly appService: AppService) {} - - @Get() - getData() { - return this.appService.getData(); - } -} diff --git a/apps/pathway-design/server/src/app/app.module.ts b/apps/pathway-design/server/src/app/app.module.ts index 22e614e3..6e66b605 100644 --- a/apps/pathway-design/server/src/app/app.module.ts +++ b/apps/pathway-design/server/src/app/app.module.ts @@ -1,11 +1,22 @@ import { Module } from '@nestjs/common'; -import { AppController } from './app.controller'; -import { AppService } from './app.service'; +import { PDSPIInitializePathwayPersistenceInfrastructureModule } from '@bewoak/pathway-design-server-pathway-infrastructure'; +import { PDSPIAInitializePathwayInterfaceAdaptersModule } from '@bewoak/pathway-design-server-pathway-interface-adapters'; +import { PDSPPPathwayPresentersModule } from '@bewoak/pathway-design-server-pathway-presenters'; +import { CqrsModule } from '@nestjs/cqrs'; @Module({ - imports: [], - controllers: [AppController], - providers: [AppService], + imports: [ + PDSPIAInitializePathwayInterfaceAdaptersModule.withPersistence( + PDSPIInitializePathwayPersistenceInfrastructureModule.use( + 'inMemory' + ) + ) + .withPresenter(PDSPPPathwayPresentersModule.use('toJson')) + .build(), + CqrsModule.forRoot(), + ], + controllers: [], + providers: [], }) export class AppModule {} diff --git a/apps/pathway-design/server/src/app/app.service.spec.ts b/apps/pathway-design/server/src/app/app.service.spec.ts deleted file mode 100644 index 2b08c55d..00000000 --- a/apps/pathway-design/server/src/app/app.service.spec.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { beforeAll, describe, expect, test } from 'bun:test'; -import { Test } from '@nestjs/testing'; - -import { AppService } from './app.service'; - -describe('AppService', () => { - let service: AppService; - - beforeAll(async () => { - const app = await Test.createTestingModule({ - providers: [AppService], - }).compile(); - - service = app.get(AppService); - }); - - describe('getData', () => { - test('should return "Hello API"', () => { - expect(service.getData()).toStrictEqual({ message: 'Hello API' }); - }); - }); -}); diff --git a/apps/pathway-design/server/src/app/app.service.ts b/apps/pathway-design/server/src/app/app.service.ts deleted file mode 100644 index 42eee86b..00000000 --- a/apps/pathway-design/server/src/app/app.service.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { Injectable } from '@nestjs/common'; - -@Injectable() -export class AppService { - getData(): { message: string } { - return { message: 'Hello API' }; - } -} diff --git a/apps/pathway-design/server/src/main.ts b/apps/pathway-design/server/src/main.ts index 73653397..aec46808 100644 --- a/apps/pathway-design/server/src/main.ts +++ b/apps/pathway-design/server/src/main.ts @@ -6,13 +6,38 @@ import { Logger } from '@nestjs/common'; import { NestFactory } from '@nestjs/core'; +import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger'; import { AppModule } from './app/app.module'; async function bootstrap() { - const app = await NestFactory.create(AppModule); + const app = await NestFactory.create(AppModule, { bufferLogs: true }); const globalPrefix = 'api'; app.setGlobalPrefix(globalPrefix); const port = process.env.PORT ?? 3000; + + // Setting up Swagger document + const options = new DocumentBuilder() + .setTitle('Pathway Design Application') + .setDescription( + 'Application Programming Interface (API) of Pathway Design Application' + ) + .setVersion('1.0') + .addBearerAuth( + { + description: + 'Please enter token in following format: Bearer ', + name: 'Authorization', + bearerFormat: 'Bearer', + scheme: 'Bearer', + type: 'http', + in: 'Header', + }, + 'access-token' + ) + .build(); + const document = SwaggerModule.createDocument(app, options); + SwaggerModule.setup('api', app, document); + await app.listen(port); Logger.log( `🚀 Application is running on: http://localhost:${port}/${globalPrefix}` diff --git a/apps/pathway-design/server/src/test/index.feature b/apps/pathway-design/server/src/test/index.feature deleted file mode 100644 index befb128f..00000000 --- a/apps/pathway-design/server/src/test/index.feature +++ /dev/null @@ -1,7 +0,0 @@ -Feature: Controller Testing - - Scenario: Get request to / - Given l'application NestJS est lancĂ©e - When j'effectue une requĂȘte GET sur "/" - Then la rĂ©ponse doit avoir un statut 200 - And la rĂ©ponse doit contenir "Hello API" diff --git a/apps/pathway-design/server/src/test/index.step.ts b/apps/pathway-design/server/src/test/index.step.ts deleted file mode 100644 index 7f2c6215..00000000 --- a/apps/pathway-design/server/src/test/index.step.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { strict as assert } from 'node:assert'; -import type { Http2Server } from 'node:http2'; -import type { INestApplication } from '@nestjs/common'; -import { Test } from '@nestjs/testing'; -import { binding, given, then, when } from 'cucumber-tsflow'; -import request from 'supertest'; -import { AppModule } from '../app/app.module'; - -@binding() -class ControllerSteps { - private app: INestApplication; - private response: request.Response; - private httpServer: Http2Server; - - @given("l'application NestJS est lancĂ©e") - public async givenApplicationIsRunning() { - const module = await Test.createTestingModule({ - imports: [AppModule], - }).compile(); - - this.app = module.createNestApplication(); - await this.app.init(); - this.httpServer = this.app.getHttpServer(); - } - - @when("j'effectue une requĂȘte GET sur {string}") - public async whenIMakeAGetRequest(url: string) { - this.response = await request(this.httpServer).get(url); - } - - @then('la rĂ©ponse doit avoir un statut {int}') - public thenTheResponseStatusShouldBe(status: number) { - assert.strictEqual(this.response.status, status); - } - - @then('la rĂ©ponse doit contenir {string}') - public thenTheResponseShouldContain(content: string) { - assert.ok(this.response.text.includes(content)); - } -} - -export = ControllerSteps; diff --git a/apps/pathway-design/server/webpack.config.js b/apps/pathway-design/server/webpack.config.js index c4678f44..1e73c265 100644 --- a/apps/pathway-design/server/webpack.config.js +++ b/apps/pathway-design/server/webpack.config.js @@ -8,13 +8,27 @@ module.exports = { plugins: [ new NxAppWebpackPlugin({ target: 'node', - compiler: 'swc', + compiler: 'tsc', main: './src/main.ts', tsConfig: './tsconfig.app.json', assets: ['./src/assets'], optimization: process.env.BUN_ENV === 'production', outputHashing: process.env.BUN_ENV === 'production' ? 'all' : 'none', + transformers: [ + { + name: '@nestjs/swagger/plugin', + options: { + classValidatorShim: true, + dtoFileNameSuffix: [ + '.dto.ts', + '.entity.ts', + '.schema.ts', + ], + introspectComments: true, + }, + }, + ], }), ], }; diff --git a/bun.lockb b/bun.lockb index e1441afb2fd85e3765bd3572848bffca3195894e..c5acadee92ae51d0c90bd4b01501a427cf33e6a3 100755 GIT binary patch delta 116298 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�FdUTN4bWZ?PdE(T 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 delta 116208 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

JJfVA0qtbA!1Fxd5E}qi0u-+jqiMf&wRwl`G`Jd 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 tFP1)LmsYo;8PS9wZL{<}J&KH*{6D28R?q+d diff --git a/libs/pathway-design/server/pathway/application/src/lib/initialize/service/initialize-pathway.service.ts b/libs/pathway-design/server/pathway/application/src/lib/initialize/service/initialize-pathway.service.ts index 877daec9..d654d66f 100644 --- a/libs/pathway-design/server/pathway/application/src/lib/initialize/service/initialize-pathway.service.ts +++ b/libs/pathway-design/server/pathway/application/src/lib/initialize/service/initialize-pathway.service.ts @@ -1,4 +1,4 @@ -import type { PDSPBPPathwayPresenter } from '@bewoak/pathway-design-server-pathway-business'; +import type { PDSPBPPathwayPresenters } from '@bewoak/pathway-design-server-pathway-business'; import { Inject, Injectable } from '@nestjs/common'; import { CommandBus } from '@nestjs/cqrs'; import type { PDSPAInitializePathwayCommand } from '../command/initialize-pathway.command'; @@ -10,7 +10,7 @@ export class PDSPAInitializePathwayService { init(pDSPAInitializePathwayCommand: PDSPAInitializePathwayCommand) { return this.commandBus.execute< PDSPAInitializePathwayCommand, - PDSPBPPathwayPresenter + PDSPBPPathwayPresenters >(pDSPAInitializePathwayCommand); } } diff --git a/libs/pathway-design/server/pathway/application/src/lib/initialize/usecase/initialize-pathway.usecase.step.ts b/libs/pathway-design/server/pathway/application/src/lib/initialize/usecase/initialize-pathway.usecase.step.ts index 7f76c4ef..4b945be3 100644 --- a/libs/pathway-design/server/pathway/application/src/lib/initialize/usecase/initialize-pathway.usecase.step.ts +++ b/libs/pathway-design/server/pathway/application/src/lib/initialize/usecase/initialize-pathway.usecase.step.ts @@ -2,8 +2,8 @@ import { strict as assert } from 'node:assert'; import type { PDSPBEPathwayEntity, PDSPBPInitializePathwayPersistencePort, - PDSPBPPathwayPresenter, PDSPBPPathwayPresenterPort, + PDSPBPPathwayPresenters, } from '@bewoak/pathway-design-server-pathway-business'; import type { DataTable } from '@cucumber/cucumber'; import type { EventPublisher } from '@nestjs/cqrs'; @@ -45,7 +45,7 @@ class FakeEventPublisher { @binding() export default class ControllerSteps { private pDSPBUInitPathwayUseCase = new PDSPAIUInitializePathwayUsecase(); - private result: PDSPBPPathwayPresenter | undefined; + private result: PDSPBPPathwayPresenters | undefined; private fakeInitializePathwayPersistence = new FakeInitializePathwayPersistence(); private fakePathwayPresenter = new FakePathwayPresenter(); diff --git a/libs/pathway-design/server/pathway/business/src/index.ts b/libs/pathway-design/server/pathway/business/src/index.ts index 04e00821..24ba0a3f 100644 --- a/libs/pathway-design/server/pathway/business/src/index.ts +++ b/libs/pathway-design/server/pathway/business/src/index.ts @@ -6,7 +6,7 @@ export { } from './lib/ports/persistences/initialize/initialize-pathway-persitence.port'; export { PDSPBP_PATHWAY_PRESENTER_PORT, - type PDSPBPPathwayPresenter, type PDSPBPPathwayPresenterPort, + type PDSPBPPathwayPresenters, } from './lib/ports/presenters/pathway-presenter.port'; export { PDSPBVOTitleValueObjects } from './lib/value-objects/title.value-object'; diff --git a/libs/pathway-design/server/pathway/business/src/lib/entities/pathway.feature b/libs/pathway-design/server/pathway/business/src/lib/entities/pathway.feature index 3ae6ae7c..da15165f 100644 --- a/libs/pathway-design/server/pathway/business/src/lib/entities/pathway.feature +++ b/libs/pathway-design/server/pathway/business/src/lib/entities/pathway.feature @@ -47,3 +47,27 @@ Feature: Manage Pathway Entity | id | title | description | researchField | | | | | | Then I should see an error message "Pathway id must be a valid uuid" + + Scenario: I want to initialize a pathway with missing id + When I initialize a pathway with these data + | title | description | researchField | + | My Pathway | A test pathway | biology | + Then I should see an error message "Pathway id must be a valid uuid" + + Scenario: I want to initialize a pathway with missing title + When I initialize a pathway with these data + | id | description | researchField | + | f7703737-186c-4c7c-8d46-925111c7c7c1 | A test pathway | biology | + Then I should see an error message "Title is required" + + Scenario: I want to initialize a pathway with missing description + When I initialize a pathway with these data + | id | title | researchField | + | f7703737-186c-4c7c-8d46-925111c7c7c1 | My Pathway | biology | + Then I should see an error message "Description is required" + + Scenario: I want to initialize a pathway with missing research field + When I initialize a pathway with these data + | id | title | description | + | f7703737-186c-4c7c-8d46-925111c7c7c1 | My Pathway | A test pathway | + Then I should see an error message "Research field is required" diff --git a/libs/pathway-design/server/pathway/business/src/lib/exceptions.ts b/libs/pathway-design/server/pathway/business/src/lib/exceptions.ts new file mode 100644 index 00000000..9c615057 --- /dev/null +++ b/libs/pathway-design/server/pathway/business/src/lib/exceptions.ts @@ -0,0 +1,62 @@ +export class BadRequestException extends Error { + public readonly statusCode: number; + + constructor(message: string) { + super(message); + this.name = 'BadRequestException'; + this.statusCode = HttpStatus.BAD_REQUEST; + this.message = message; + Error.captureStackTrace(this, this.constructor); + } +} + +export enum HttpStatus { + CONTINUE = 100, + SWITCHING_PROTOCOLS = 101, + PROCESSING = 102, + EARLYHINTS = 103, + OK = 200, + CREATED = 201, + ACCEPTED = 202, + NON_AUTHORITATIVE_INFORMATION = 203, + NO_CONTENT = 204, + RESET_CONTENT = 205, + PARTIAL_CONTENT = 206, + AMBIGUOUS = 300, + MOVED_PERMANENTLY = 301, + FOUND = 302, + SEE_OTHER = 303, + NOT_MODIFIED = 304, + TEMPORARY_REDIRECT = 307, + PERMANENT_REDIRECT = 308, + BAD_REQUEST = 400, + UNAUTHORIZED = 401, + PAYMENT_REQUIRED = 402, + FORBIDDEN = 403, + NOT_FOUND = 404, + METHOD_NOT_ALLOWED = 405, + NOT_ACCEPTABLE = 406, + PROXY_AUTHENTICATION_REQUIRED = 407, + REQUEST_TIMEOUT = 408, + CONFLICT = 409, + GONE = 410, + LENGTH_REQUIRED = 411, + PRECONDITION_FAILED = 412, + PAYLOAD_TOO_LARGE = 413, + URI_TOO_LONG = 414, + UNSUPPORTED_MEDIA_TYPE = 415, + REQUESTED_RANGE_NOT_SATISFIABLE = 416, + EXPECTATION_FAILED = 417, + I_AM_A_TEAPOT = 418, + MISDIRECTED = 421, + UNPROCESSABLE_ENTITY = 422, + FAILED_DEPENDENCY = 424, + PRECONDITION_REQUIRED = 428, + TOO_MANY_REQUESTS = 429, + INTERNAL_SERVER_ERROR = 500, + NOT_IMPLEMENTED = 501, + BAD_GATEWAY = 502, + SERVICE_UNAVAILABLE = 503, + GATEWAY_TIMEOUT = 504, + HTTP_VERSION_NOT_SUPPORTED = 505, +} diff --git a/libs/pathway-design/server/pathway/business/src/lib/ports/presenters/pathway-presenter.port.ts b/libs/pathway-design/server/pathway/business/src/lib/ports/presenters/pathway-presenter.port.ts index 93e5c1a3..ef87ba5a 100644 --- a/libs/pathway-design/server/pathway/business/src/lib/ports/presenters/pathway-presenter.port.ts +++ b/libs/pathway-design/server/pathway/business/src/lib/ports/presenters/pathway-presenter.port.ts @@ -7,12 +7,12 @@ export interface PDSPBPJsonPathwayPresenter { title: string; } -export type PDSPBPPathwayPresenter = PDSPBPJsonPathwayPresenter; +export type PDSPBPPathwayPresenters = PDSPBPJsonPathwayPresenter; export interface PDSPBPPathwayPresenterPort { present: ( pDSPBEpathwayEntity: PDSPBEPathwayEntity - ) => PDSPBPPathwayPresenter; + ) => PDSPBPPathwayPresenters; } export const PDSPBP_PATHWAY_PRESENTER_PORT = Symbol( diff --git a/libs/pathway-design/server/pathway/business/src/lib/value-objects/description.value-object.ts b/libs/pathway-design/server/pathway/business/src/lib/value-objects/description.value-object.ts index 30d45b9a..e93c8704 100644 --- a/libs/pathway-design/server/pathway/business/src/lib/value-objects/description.value-object.ts +++ b/libs/pathway-design/server/pathway/business/src/lib/value-objects/description.value-object.ts @@ -1,7 +1,9 @@ +import { BadRequestException } from '../exceptions'; + export class DescriptionValueObject { constructor(private description: string) { if (this.isEmpty(description)) { - throw new Error('Description is required'); + throw new BadRequestException('Description is required'); } } get value() { @@ -16,7 +18,7 @@ export class DescriptionValueObject { return this.description; } - private isEmpty(name: string) { - return name.length === 0; + private isEmpty(name: string | undefined) { + return name === undefined || name.length === 0; } } diff --git a/libs/pathway-design/server/pathway/business/src/lib/value-objects/pathway-id.value-object.ts b/libs/pathway-design/server/pathway/business/src/lib/value-objects/pathway-id.value-object.ts index ee5bc18d..ae1d13eb 100644 --- a/libs/pathway-design/server/pathway/business/src/lib/value-objects/pathway-id.value-object.ts +++ b/libs/pathway-design/server/pathway/business/src/lib/value-objects/pathway-id.value-object.ts @@ -1,7 +1,9 @@ +import { BadRequestException } from '../exceptions'; + export class PathwayIdValueObject { constructor(private id: string) { if (!this.isUuid(id)) { - throw new Error('Pathway id must be a valid uuid'); + throw new BadRequestException('Pathway id must be a valid uuid'); } } get value() { diff --git a/libs/pathway-design/server/pathway/business/src/lib/value-objects/research-field.value-object.ts b/libs/pathway-design/server/pathway/business/src/lib/value-objects/research-field.value-object.ts index 1ab0313b..a3620b06 100644 --- a/libs/pathway-design/server/pathway/business/src/lib/value-objects/research-field.value-object.ts +++ b/libs/pathway-design/server/pathway/business/src/lib/value-objects/research-field.value-object.ts @@ -1,7 +1,9 @@ +import { BadRequestException } from '../exceptions'; + export class ResearchFieldValueObjects { constructor(private researchField: string) { if (this.isEmpty(researchField)) { - throw new Error('Research field is required'); + throw new BadRequestException('Research field is required'); } } get value() { @@ -16,7 +18,7 @@ export class ResearchFieldValueObjects { return this.researchField; } - private isEmpty(name: string) { - return name.length === 0; + private isEmpty(researchField: string | undefined) { + return researchField === undefined || researchField.length === 0; } } diff --git a/libs/pathway-design/server/pathway/business/src/lib/value-objects/title.value-object.ts b/libs/pathway-design/server/pathway/business/src/lib/value-objects/title.value-object.ts index d3321a7a..b655d48b 100644 --- a/libs/pathway-design/server/pathway/business/src/lib/value-objects/title.value-object.ts +++ b/libs/pathway-design/server/pathway/business/src/lib/value-objects/title.value-object.ts @@ -1,7 +1,9 @@ +import { BadRequestException } from '../exceptions'; + export class PDSPBVOTitleValueObjects { constructor(private title: string) { if (this.isEmpty(title)) { - throw new Error('Title is required'); + throw new BadRequestException('Title is required'); } } @@ -17,7 +19,7 @@ export class PDSPBVOTitleValueObjects { return this.title; } - private isEmpty(title: string) { - return title.length === 0; + private isEmpty(title: string | undefined) { + return title === undefined || title.length === 0; } } diff --git a/libs/pathway-design/server/pathway/interface-adapters/src/lib/initialize/controller/initialize-pathway.controller.ts b/libs/pathway-design/server/pathway/interface-adapters/src/lib/initialize/controller/initialize-pathway.controller.ts index 75d62ba6..f57e56be 100644 --- a/libs/pathway-design/server/pathway/interface-adapters/src/lib/initialize/controller/initialize-pathway.controller.ts +++ b/libs/pathway-design/server/pathway/interface-adapters/src/lib/initialize/controller/initialize-pathway.controller.ts @@ -2,10 +2,28 @@ import { PDSPAInitializePathwayCommand, PDSPAInitializePathwayService, } from '@bewoak/pathway-design-server-pathway-application'; -import { Body, Controller, Inject, Post } from '@nestjs/common'; -import type { InitializePathwayRequestBodyDto } from '../dtos/request/body/initialize-pathway-request-body.dto'; +import { + Body, + Controller, + Inject, + Post, + UsePipes, + ValidationPipe, +} from '@nestjs/common'; +import { ApiBearerAuth, ApiTags } from '@nestjs/swagger'; +import type { InitializePathwayRequestBodyDto } from '../dtos/request/body/index.dto'; +import type { InitializedPathwayResponseBodyDto } from '../dtos/response/body/index.dto'; -@Controller('pathway') +@ApiTags('Pathway') +@UsePipes( + new ValidationPipe({ + whitelist: true, + forbidNonWhitelisted: true, + }) +) +@Controller({ + path: 'pathway', +}) export class InitializePathwayController { constructor( @Inject(PDSPAInitializePathwayService) @@ -13,9 +31,10 @@ export class InitializePathwayController { ) {} @Post('init') + @ApiBearerAuth('access-token') execute( @Body() initializePathwayRequestBodyDto: InitializePathwayRequestBodyDto - ) { + ): Promise { return this.pDSPAInitializePathwayService.init( new PDSPAInitializePathwayCommand( initializePathwayRequestBodyDto.description, diff --git a/libs/pathway-design/server/pathway/interface-adapters/src/lib/initialize/dtos/request/body/index.dto.ts b/libs/pathway-design/server/pathway/interface-adapters/src/lib/initialize/dtos/request/body/index.dto.ts new file mode 100644 index 00000000..db985a7c --- /dev/null +++ b/libs/pathway-design/server/pathway/interface-adapters/src/lib/initialize/dtos/request/body/index.dto.ts @@ -0,0 +1,15 @@ +export class InitializePathwayRequestBodyDto + implements IInitializePathwayRequestBodyDto +{ + readonly title!: string; + + readonly description!: string; + + readonly researchField!: string; +} + +export interface IInitializePathwayRequestBodyDto { + description: string; + researchField: string; + title: string; +} diff --git a/libs/pathway-design/server/pathway/interface-adapters/src/lib/initialize/dtos/request/body/initialize-pathway-request-body.dto.ts b/libs/pathway-design/server/pathway/interface-adapters/src/lib/initialize/dtos/request/body/initialize-pathway-request-body.dto.ts deleted file mode 100644 index 53c1ab01..00000000 --- a/libs/pathway-design/server/pathway/interface-adapters/src/lib/initialize/dtos/request/body/initialize-pathway-request-body.dto.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { ApiProperty } from '@nestjs/swagger'; -import { IsString } from 'class-validator'; - -export class InitializePathwayRequestBodyDto { - @ApiProperty({ description: 'The title of the pathway' }) - @IsString() - readonly title!: string; - - @ApiProperty({ description: 'The description of the pathway' }) - @IsString() - readonly description!: string; - - @ApiProperty({ description: 'The research field of the pathway' }) - @IsString() - readonly researchField!: string; -} diff --git a/libs/pathway-design/server/pathway/interface-adapters/src/lib/initialize/dtos/response/body/index.dto.ts b/libs/pathway-design/server/pathway/interface-adapters/src/lib/initialize/dtos/response/body/index.dto.ts new file mode 100644 index 00000000..789e65e7 --- /dev/null +++ b/libs/pathway-design/server/pathway/interface-adapters/src/lib/initialize/dtos/response/body/index.dto.ts @@ -0,0 +1,10 @@ +import type { PDSPBPPathwayPresenters } from '@bewoak/pathway-design-server-pathway-business'; + +export class InitializedPathwayResponseBodyDto + implements PDSPBPPathwayPresenters +{ + description!: string; + id!: string; + researchField!: string; + title!: string; +} diff --git a/package.json b/package.json index 2d6347a4..dc104890 100644 --- a/package.json +++ b/package.json @@ -1,67 +1,68 @@ { - "dependencies": { - "@nestjs/common": "^10.0.2", - "@nestjs/core": "^10.0.2", - "@nestjs/cqrs": "^10.2.7", - "@nestjs/platform-express": "^10.0.2", - "@nestjs/swagger": "^7.4.0", - "@nx/nest": "^19.4.2", - "@swc/cli": "^0.4.0", - "class-transformer": "^0.5.1", - "class-validator": "^0.14.1", - "crypto": "^1.0.1", - "reflect-metadata": "^0.1.13", - "rxjs": "^7.8.0", - "swc-loader": "^0.2.6", - "tslib": "^2.3.0" - }, - "devDependencies": { - "@biomejs/biome": "^1.8.3", - "@commitlint/config-conventional": "^19.2.2", - "@cucumber/cucumber": "^10.8.0", - "@nestjs/schematics": "^10.0.1", - "@nestjs/testing": "^10.0.2", - "@nx/eslint": "19.4.2", - "@nx/js": "19.4.2", - "@nx/node": "19.4.2", - "@nx/web": "19.4.2", - "@nx/webpack": "19.4.2", - "@nx/workspace": "19.4.2", - "@swc-node/register": "~1.9.1", - "@swc/core": "~1.5.7", - "@swc/helpers": "~0.5.11", - "@types/bun": "^1.1.6", - "@types/node": "~18.16.9", - "@types/sinon": "^17.0.3", - "@types/supertest": "^6.0.2", - "bun-types": "^1.1.18", - "chokidar": "^3.6.0", - "commitlint": "^19.3.0", - "cucumber-tsflow": "^4.4.4", - "nx": "19.4.2", - "sinon": "^18.0.0", - "supertest": "^7.0.0", - "typescript": "~5.4.2", - "verdaccio": "^5.0.4", - "webpack-cli": "^5.1.4" - }, - "license": "MIT", - "name": "bewoak", - "nx": { - "includedScripts": [] - }, - "private": true, - "scripts": { - "biome": "biome", - "build": "nx run-many --target=build --parallel=4", - "format": "biome format --write", - "format:check": "biome format", - "lint": "nx run-many --target=lint --parallel=4", - "nx": "nx", - "postinstall": "chmod +x .hooks/* && git config core.hooksPath .hooks", - "start": "nx serve pathway-design-server", - "test": "nx run-many --target=test --parallel=4", - "test:feature": "nx run-many --target=test-feature --parallel=4" - }, - "version": "0.0.1" + "dependencies": { + "@nestjs/common": "^10.0.2", + "@nestjs/core": "^10.0.2", + "@nestjs/cqrs": "^10.2.7", + "@nestjs/platform-express": "^10.0.2", + "@nestjs/swagger": "^7.4.0", + "@nx/nest": "^19.4.2", + "@swc/cli": "^0.4.0", + "class-transformer": "^0.5.1", + "class-validator": "^0.14.1", + "crypto": "^1.0.1", + "reflect-metadata": "^0.1.13", + "rxjs": "^7.8.0", + "swagger-ui-express": "^5.0.1", + "swc-loader": "^0.2.6", + "tslib": "^2.3.0" + }, + "devDependencies": { + "@biomejs/biome": "^1.8.3", + "@commitlint/config-conventional": "^19.2.2", + "@cucumber/cucumber": "^10.8.0", + "@nestjs/schematics": "^10.0.1", + "@nestjs/testing": "^10.0.2", + "@nx/eslint": "19.4.2", + "@nx/js": "19.4.2", + "@nx/node": "19.4.2", + "@nx/web": "19.4.2", + "@nx/webpack": "19.4.2", + "@nx/workspace": "19.4.2", + "@swc-node/register": "~1.9.1", + "@swc/core": "~1.5.7", + "@swc/helpers": "~0.5.11", + "@types/bun": "^1.1.6", + "@types/node": "~18.16.9", + "@types/sinon": "^17.0.3", + "@types/supertest": "^6.0.2", + "bun-types": "^1.1.18", + "chokidar": "^3.6.0", + "commitlint": "^19.3.0", + "cucumber-tsflow": "^4.4.4", + "nx": "19.4.2", + "sinon": "^18.0.0", + "supertest": "^7.0.0", + "typescript": "~5.4.2", + "verdaccio": "^5.0.4", + "webpack-cli": "^5.1.4" + }, + "license": "MIT", + "name": "bewoak", + "nx": { + "includedScripts": [] + }, + "private": true, + "scripts": { + "biome": "biome", + "build": "nx run-many --target=build --parallel=4", + "format": "biome format --write", + "format:check": "biome format", + "lint": "nx run-many --target=lint --parallel=4", + "nx": "nx", + "postinstall": "chmod +x .hooks/* && git config core.hooksPath .hooks", + "start": "nx serve pathway-design-server", + "test": "nx run-many --target=test --parallel=4", + "test:feature": "nx run-many --target=test-feature --parallel=4" + }, + "version": "0.0.1" }