From 82bbaa6dc049fbb8c21e703179259ba5c2083661 Mon Sep 17 00:00:00 2001 From: Mathieu Collette Date: Thu, 17 Oct 2024 18:19:43 +0200 Subject: [PATCH] feat: add event emitter --- .detective/hash | 2 +- .detective/log | 135 ++++++++++++++++++ apps/pathway-design/client/.gitkeep | 0 .../server/src/app/app.module.ts | 11 +- .../specs/change-title-pathway/index.step.ts | 10 ++ .../specs/initialize-pathway/index.feature | 1 + .../specs/initialize-pathway/index.step.ts | 35 +++++ bun.lockb | Bin 623494 -> 624300 bytes libs/common/contracts/events/pathway/.swcrc | 22 +++ .../contracts/events/pathway/biome.json | 17 +++ .../contracts/events/pathway/cucumber.js | 11 ++ .../contracts/events/pathway/package.json | 9 ++ .../contracts/events/pathway/project.json | 50 +++++++ .../contracts/events/pathway/src/index.ts | 1 + .../pathway-initialized.constants.ts | 1 + .../initialized/pathway-initialized.event.ts | 12 ++ .../contracts/events/pathway/tsconfig.json | 22 +++ .../events/pathway/tsconfig.lib.json | 11 ++ .../events/pathway/tsconfig.spec.json | 10 ++ libs/common/contracts/http/.gitkeep | 0 .../server/pathway/application/project.json | 2 +- .../server/pathway/application/src/index.ts | 1 + .../initialize-pathway.event-handler.ts | 20 +++ .../service/initialize-pathway.service.ts | 2 +- .../server/pathway/business/src/index.ts | 1 + .../business/src/lib/entities/pathway.ts | 6 +- .../lib/events/pathway-initialized.event.ts | 7 +- .../src/lib/factories/pathway.factory.ts | 2 +- .../initialize/initialize-pathway.step.ts | 4 +- .../initialize-pathway.controller.ts | 2 +- ...alize-pathway-interface-adapters.module.ts | 8 +- .../routes/initialize-pathway.route.ts | 4 + package.json | 1 + tsconfig.base.json | 1 + 34 files changed, 408 insertions(+), 13 deletions(-) create mode 100644 apps/pathway-design/client/.gitkeep create mode 100644 libs/common/contracts/events/pathway/.swcrc create mode 100644 libs/common/contracts/events/pathway/biome.json create mode 100644 libs/common/contracts/events/pathway/cucumber.js create mode 100644 libs/common/contracts/events/pathway/package.json create mode 100644 libs/common/contracts/events/pathway/project.json create mode 100644 libs/common/contracts/events/pathway/src/index.ts create mode 100644 libs/common/contracts/events/pathway/src/lib/initialized/pathway-initialized.constants.ts create mode 100644 libs/common/contracts/events/pathway/src/lib/initialized/pathway-initialized.event.ts create mode 100644 libs/common/contracts/events/pathway/tsconfig.json create mode 100644 libs/common/contracts/events/pathway/tsconfig.lib.json create mode 100644 libs/common/contracts/events/pathway/tsconfig.spec.json create mode 100644 libs/common/contracts/http/.gitkeep create mode 100644 libs/pathway-design/server/pathway/application/src/lib/initialize/event-handler/initialize-pathway.event-handler.ts create mode 100644 libs/pathway-design/server/pathway/interface-adapters/src/lib/initialize/routes/initialize-pathway.route.ts diff --git a/.detective/hash b/.detective/hash index b610274e..b5ad6d4b 100644 --- a/.detective/hash +++ b/.detective/hash @@ -1 +1 @@ -642b80d2d427239e1c6fdcd349f22edd0f79d0e6, v1.1.6 \ No newline at end of file +7293506443296ea9cf3b4c4f9160806365be91e2, v1.1.6 \ No newline at end of file diff --git a/.detective/log b/.detective/log index 86e86b89..019ad0fd 100644 --- a/.detective/log +++ b/.detective/log @@ -1,3 +1,138 @@ +"Mathieu Collette ,Thu Oct 17 12:05:45 2024 +0200 fd282696dc8ac4c83007497b5bfdfaee134e728b,refactor: extract business rules" +4 1 libs/pathway-design/common/business/pathway/rules/src/index.ts +19 0 libs/pathway-design/common/business/pathway/rules/src/lib/description/description.rules.ts +52 0 libs/pathway-design/common/business/pathway/rules/src/lib/description/description.spec.ts +10 0 libs/pathway-design/common/business/pathway/rules/src/lib/pathway-id/pathway-id.rules.ts +22 0 libs/pathway-design/common/business/pathway/rules/src/lib/pathway-id/pathway-id.spec.ts +19 0 libs/pathway-design/common/business/pathway/rules/src/lib/research-field/research-field.rules.ts +52 0 libs/pathway-design/common/business/pathway/rules/src/lib/research-field/research-field.spec.ts +13 6 libs/pathway-design/common/business/pathway/rules/src/lib/title/title.rules.ts +26 12 libs/pathway-design/common/business/pathway/rules/src/lib/title/title.spec.ts +4 3 libs/pathway-design/common/business/pathway/rules/src/lib/types.ts +0 44 libs/pathway-design/server/pathway/business/src/lib/factories/pathway.factory.spec.ts +2 2 libs/pathway-design/server/pathway/business/src/lib/specs/change-name/change-title-pathway.feature +4 3 libs/pathway-design/server/pathway/business/src/lib/specs/change-name/change-title-pathway.step.ts +4 47 libs/pathway-design/server/pathway/business/src/lib/specs/initialize/initialize-pathway.feature +4 3 libs/pathway-design/server/pathway/business/src/lib/specs/initialize/initialize-pathway.step.ts +3 2 libs/pathway-design/server/pathway/business/src/lib/value-objects/description.value-object.spec.ts +3 6 libs/pathway-design/server/pathway/business/src/lib/value-objects/description.value-object.ts +3 2 libs/pathway-design/server/pathway/business/src/lib/value-objects/pathway-id.value-object.spec.ts +3 8 libs/pathway-design/server/pathway/business/src/lib/value-objects/pathway-id.value-object.ts +3 2 libs/pathway-design/server/pathway/business/src/lib/value-objects/research-field.value-object.spec.ts +3 2 libs/pathway-design/server/pathway/business/src/lib/value-objects/research-field.value-object.ts +3 2 libs/pathway-design/server/pathway/business/src/lib/value-objects/title.value-object.spec.ts +3 3 libs/pathway-design/server/pathway/business/src/lib/value-objects/title.value-object.ts + +"Mathieu Collette ,Mon Oct 14 18:42:15 2024 +0200 84773010de01b55d429b7696c29c3056e9aaa362,fix: business rules" +4 4 libs/pathway-design/common/business/pathway/rules/project.json +2 2 libs/pathway-design/common/business/pathway/rules/src/lib/title/title.rules.ts + +"Mathieu Collette ,Mon Oct 14 18:30:13 2024 +0200 c12202b6e7f740b6a3fdf59c61b4b05f22531e92,refactor: pathway rules" +22 0 libs/pathway-design/common/business/pathway/rules/.swcrc +17 0 libs/pathway-design/common/business/pathway/rules/biome.json +11 0 libs/pathway-design/common/business/pathway/rules/cucumber.js +9 0 libs/pathway-design/common/business/pathway/rules/package.json +50 0 libs/pathway-design/common/business/pathway/rules/project.json +1 0 libs/pathway-design/common/business/pathway/rules/src/index.ts +12 0 libs/pathway-design/common/business/pathway/rules/src/lib/title/title.rules.ts +38 0 libs/pathway-design/common/business/pathway/rules/src/lib/title/title.spec.ts +6 0 libs/pathway-design/common/business/pathway/rules/src/lib/types.ts +22 0 libs/pathway-design/common/business/pathway/rules/tsconfig.json +11 0 libs/pathway-design/common/business/pathway/rules/tsconfig.lib.json +10 0 libs/pathway-design/common/business/pathway/rules/tsconfig.spec.json +1 1 libs/pathway-design/server/pathway/application/src/index.ts +1 1 libs/pathway-design/server/pathway/application/src/lib/initialize/service/initialize-pathway.service.ts +1 1 libs/pathway-design/server/pathway/business/src/lib/value-objects/description.value-object.ts +1 1 libs/pathway-design/server/pathway/business/src/lib/value-objects/pathway-id.value-object.ts +1 1 libs/pathway-design/server/pathway/business/src/lib/value-objects/research-field.value-object.ts +3 6 libs/pathway-design/server/pathway/business/src/lib/value-objects/title.value-object.ts +2 2 libs/pathway-design/server/pathway/interface-adapters/src/lib/initialize/controller/initialize-pathway.controller.ts +3 3 libs/pathway-design/server/pathway/interface-adapters/src/lib/initialize/initialize-pathway-interface-adapters.module.ts +0 0 libs/{pathway-design/server/common/.keep => search/client/.gitkeep} +0 0 libs/search/{.keep => server/pathway/.gitkeep} +3 0 tsconfig.base.json + +"Mathieu Collette ,Fri Oct 11 21:06:03 2024 +0200 a94f94a17feedff2481a42013c43c3eb097790d6,refactor: env variables" +1 1 libs/pathway-design/server/pathway/application/src/index.ts +1 1 libs/pathway-design/server/pathway/application/src/lib/initialize/service/initialize-pathway.service.ts +3 5 libs/pathway-design/server/pathway/infrastructure/src/index.ts +28 0 libs/pathway-design/server/pathway/infrastructure/src/lib/persistence/pathway-persistence-infrastructure.constants.ts +3 24 libs/pathway-design/server/pathway/infrastructure/src/lib/persistence/pathway-persistence-infrastructure.module.ts +1 0 libs/pathway-design/server/pathway/infrastructure/src/lib/persistence/pathway-persistence-infrastructure.types.ts +2 2 libs/pathway-design/server/pathway/interface-adapters/src/lib/initialize/controller/initialize-pathway.controller.ts +3 3 libs/pathway-design/server/pathway/interface-adapters/src/lib/initialize/initialize-pathway-interface-adapters.module.ts +3 5 libs/pathway-design/server/pathway/presenters/src/index.ts +8 0 libs/pathway-design/server/pathway/presenters/src/lib/pathway-presenters.constants.ts +2 9 libs/pathway-design/server/pathway/presenters/src/lib/pathway-presenters.module.ts +1 0 libs/pathway-design/server/pathway/presenters/src/lib/pathway-presenters.types.ts + +"Mathieu Collette ,Fri Oct 11 18:10:50 2024 +0200 20f4ced81196ef5adf8ccfbfdcba870df16422cc,feat: choice presenter persistence" +36 17 apps/pathway-design/server/src/app/app.module.ts +10 0 apps/pathway-design/server/src/environment/env.schema.ts +27 30 apps/pathway-design/server/src/main.ts +6 3 apps/pathway-design/server/src/specs/change-title-pathway/index.feature +17 11 apps/pathway-design/server/src/specs/change-title-pathway/index.step.ts +6 4 apps/pathway-design/server/src/specs/initialize-pathway/index.feature +14 8 apps/pathway-design/server/src/specs/initialize-pathway/index.step.ts +3 0 biome.json +- - bun.lockb +22 0 libs/common/configs/server/env/.swcrc +17 0 libs/common/configs/server/env/biome.json +11 0 libs/common/configs/server/env/cucumber.js +9 0 libs/common/configs/server/env/package.json +50 0 libs/common/configs/server/env/project.json +2 0 libs/common/configs/server/env/src/index.ts +15 0 libs/common/configs/server/env/src/lib/check-env-variables.ts +4 0 libs/common/configs/server/env/src/lib/get-env-variables.ts +22 0 libs/common/configs/server/env/tsconfig.json +11 0 libs/common/configs/server/env/tsconfig.lib.json +10 0 libs/common/configs/server/env/tsconfig.spec.json +22 0 libs/common/configs/server/swagger/.swcrc +17 0 libs/common/configs/server/swagger/biome.json +11 0 libs/common/configs/server/swagger/cucumber.js +9 0 libs/common/configs/server/swagger/package.json +50 0 libs/common/configs/server/swagger/project.json +1 0 libs/common/configs/server/swagger/src/index.ts +30 0 libs/common/configs/server/swagger/src/lib/swagger.config.ts +7 0 libs/common/configs/server/swagger/src/lib/types.ts +22 0 libs/common/configs/server/swagger/tsconfig.json +11 0 libs/common/configs/server/swagger/tsconfig.lib.json +10 0 libs/common/configs/server/swagger/tsconfig.spec.json +1 1 libs/pathway-design/server/pathway/application/src/lib/initialize/specs/initialize-pathway.usecase.step.ts +11 3 libs/pathway-design/server/pathway/business/src/lib/entities/pathway.ts +9 3 libs/pathway-design/server/pathway/business/src/lib/events/pathway-initialized.event.ts +1 1 libs/pathway-design/server/pathway/business/src/lib/specs/change-name/change-title-pathway.step.ts +11 2 libs/pathway-design/server/pathway/business/src/lib/specs/initialize/initialize-pathway.step.ts +5 1 libs/pathway-design/server/pathway/infrastructure/src/index.ts +4 2 libs/pathway-design/server/pathway/infrastructure/src/lib/persistence/pathway-persistence-infrastructure.module.ts +5 1 libs/pathway-design/server/pathway/presenters/src/index.ts +4 2 libs/pathway-design/server/pathway/presenters/src/lib/pathway-presenters.module.ts +3 2 package.json +2 0 tsconfig.base.json + +"Mathieu Collette ,Wed Oct 9 19:02:42 2024 +0200 bf2d801496fa76753b3d70350c4ab3a5b8efe71c,refactor: formatting" +8 26 .detective/config.json + +"Mathieu Collette ,Wed Oct 9 19:02:07 2024 +0200 6313b5bc062895cfb152c14a3b1d880c2369a8eb,refactor: feature tests" +25 50 .detective/config.json +1 1 .detective/hash +225 417 .detective/log +3 0 .gitignore +5 5 apps/pathway-design/server/src/specs/change-title-pathway/index.feature +6 6 apps/pathway-design/server/src/specs/change-title-pathway/index.step.ts +5 5 apps/pathway-design/server/src/specs/initialize-pathway/index.feature +6 6 apps/pathway-design/server/src/specs/initialize-pathway/index.step.ts +- - bun.lockb +2 2 libs/pathway-design/server/pathway/application/src/lib/change-title/specs/change-title-pathway.usecase.feature +10 10 libs/pathway-design/server/pathway/application/src/lib/change-title/specs/change-title-pathway.usecase.step.ts +2 2 libs/pathway-design/server/pathway/application/src/lib/initialize/specs/initialize-pathway.usecase.feature +10 10 libs/pathway-design/server/pathway/application/src/lib/initialize/specs/initialize-pathway.usecase.step.ts +8 8 libs/pathway-design/server/pathway/business/src/lib/specs/change-name/change-title-pathway.feature +5 5 libs/pathway-design/server/pathway/business/src/lib/specs/change-name/change-title-pathway.step.ts +31 31 libs/pathway-design/server/pathway/business/src/lib/specs/initialize/initialize-pathway.feature +4 4 libs/pathway-design/server/pathway/business/src/lib/specs/initialize/initialize-pathway.step.ts +4 2 package.json + "Mathieu Collette ,Sat Sep 14 15:29:45 2024 +0200 3e4a5edcc2aa4cee558971e8876d01ad672d91a0,feat: implement change title" 1 1 .hooks/commit-msg 2 2 apps/pathway-design/server/cucumber.js diff --git a/apps/pathway-design/client/.gitkeep b/apps/pathway-design/client/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/apps/pathway-design/server/src/app/app.module.ts b/apps/pathway-design/server/src/app/app.module.ts index ee3fb2dd..2c91738f 100644 --- a/apps/pathway-design/server/src/app/app.module.ts +++ b/apps/pathway-design/server/src/app/app.module.ts @@ -13,6 +13,7 @@ import { type PDSPPPresenterDriverAuthorized, } from '@bewoak/pathway-design-server-pathway-presenters'; import { CqrsModule } from '@nestjs/cqrs'; +import { EventEmitterModule } from '@nestjs/event-emitter'; interface ApplicationBootstrapOptions { persistenceDriver: PDSPIPPersistenceDriverAuthorized; @@ -37,7 +38,15 @@ export class AppModule { .withPersistence(PDSPIPPathwayPersistenceInfrastructureModule.use(options.persistenceDriver)) .build(), CqrsModule.forRoot(), - CqrsModule.forRoot(), + EventEmitterModule.forRoot({ + wildcard: false, + delimiter: '.', + newListener: false, + removeListener: false, + maxListeners: 10, + verboseMemoryLeak: true, + ignoreErrors: false, + }), ], }; } diff --git a/apps/pathway-design/server/src/specs/change-title-pathway/index.step.ts b/apps/pathway-design/server/src/specs/change-title-pathway/index.step.ts index a9e96333..e6eb03be 100644 --- a/apps/pathway-design/server/src/specs/change-title-pathway/index.step.ts +++ b/apps/pathway-design/server/src/specs/change-title-pathway/index.step.ts @@ -15,6 +15,7 @@ import { import type { DataTable } from '@cucumber/cucumber'; import type { INestApplication } from '@nestjs/common'; import { CqrsModule } from '@nestjs/cqrs'; +import { EventEmitterModule } from '@nestjs/event-emitter'; import { Test } from '@nestjs/testing'; import { binding, given, then, when } from 'cucumber-tsflow'; import request from 'supertest'; @@ -36,6 +37,15 @@ class ControllerSteps { .withPersistence(PDSPIPPathwayPersistenceInfrastructureModule.use(persistence)) .build(), CqrsModule.forRoot(), + EventEmitterModule.forRoot({ + wildcard: false, + delimiter: '.', + newListener: false, + removeListener: false, + maxListeners: 10, + verboseMemoryLeak: true, + ignoreErrors: false, + }), ], }).compile(); diff --git a/apps/pathway-design/server/src/specs/initialize-pathway/index.feature b/apps/pathway-design/server/src/specs/initialize-pathway/index.feature index 71d8a19d..9afeb855 100644 --- a/apps/pathway-design/server/src/specs/initialize-pathway/index.feature +++ b/apps/pathway-design/server/src/specs/initialize-pathway/index.feature @@ -8,6 +8,7 @@ Feature: Platform - Initialize a Pathway Then I should retrieve from the platform a pathway initialized with its data | title | description | researchField | | My Pathway | A test pathway | biology | + Then The platform should send an event to the event bus with the pathway initialized Then The pathway received from the platform should be have a unique identifier Examples: diff --git a/apps/pathway-design/server/src/specs/initialize-pathway/index.step.ts b/apps/pathway-design/server/src/specs/initialize-pathway/index.step.ts index 84f88bef..f81a7692 100644 --- a/apps/pathway-design/server/src/specs/initialize-pathway/index.step.ts +++ b/apps/pathway-design/server/src/specs/initialize-pathway/index.step.ts @@ -1,5 +1,6 @@ import { strict as assert } from 'node:assert'; import type { Http2Server } from 'node:http2'; +import { CCEPPathwayInitializedEvent } from '@bewoak/common-contracts-events-pathway'; import { PDSPIPPathwayPersistenceInfrastructureModule, type PDSPIPPersistenceDriverAuthorized, @@ -12,13 +13,17 @@ import { import type { DataTable } from '@cucumber/cucumber'; import type { INestApplication } from '@nestjs/common'; import { CqrsModule } from '@nestjs/cqrs'; +import { EventEmitter2, EventEmitterModule } from '@nestjs/event-emitter'; import { Test } from '@nestjs/testing'; import { binding, given, then, when } from 'cucumber-tsflow'; +import sinon from 'sinon'; import request from 'supertest'; @binding() class ControllerSteps { private app: INestApplication; + private eventEmitter: EventEmitter2; + private eventEmitterSpy: sinon.SinonSpy | undefined; private httpServer: Http2Server; private response: request.Response; @@ -30,12 +35,25 @@ class ControllerSteps { .withPersistence(PDSPIPPathwayPersistenceInfrastructureModule.use(persistence)) .build(), CqrsModule.forRoot(), + EventEmitterModule.forRoot({ + wildcard: false, + delimiter: '.', + newListener: false, + removeListener: false, + maxListeners: 10, + verboseMemoryLeak: true, + ignoreErrors: false, + }), ], exports: [], }).compile(); this.app = testingModule.createNestApplication(); await this.app.init(); + + this.eventEmitter = this.app.get(EventEmitter2); + this.eventEmitterSpy = sinon.spy(this.eventEmitter, 'emit'); + this.httpServer = this.app.getHttpServer(); } @@ -50,6 +68,23 @@ class ControllerSteps { }); } + @then('The platform should send an event to the event bus with the pathway initialized') + public thenPlatformSendAnEventToEventBus() { + const expectedEvent = new CCEPPathwayInitializedEvent( + this.response.body.description, + this.response.body.id, + this.response.body.researchField, + this.response.body.title + ); + + const typeArg = this.eventEmitterSpy?.getCall(0).args[0]; + const eventArgs = this.eventEmitterSpy?.getCall(0).args[1]; + + assert(this.eventEmitterSpy?.calledOnce); + assert.deepStrictEqual(typeArg, expectedEvent.eventType); + assert.deepStrictEqual(eventArgs, expectedEvent); + } + @then('I should retrieve from the platform a pathway initialized with its data') public thenIShouldRetrieveAPathwayInitiated(dataTable: DataTable) { const firstRow = dataTable.hashes()[0]; diff --git a/bun.lockb b/bun.lockb index 0b6e79ccf8e76dd904cd8362316437cae8c5a6f8..4055572cc12d2f9d56715db9a197731c537cd66d 100755 GIT binary patch delta 117300 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

BE?Gl)O-ZP-}P2WVU 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 delta 117214 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
Y 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 NTki<6&ek{le*oYR!14e9 diff --git a/libs/common/contracts/events/pathway/.swcrc b/libs/common/contracts/events/pathway/.swcrc new file mode 100644 index 00000000..d24f1ace --- /dev/null +++ b/libs/common/contracts/events/pathway/.swcrc @@ -0,0 +1,22 @@ +{ + "jsc": { + "target": "es2022", + "parser": { + "syntax": "typescript", + "decorators": true, + "dynamicImport": true + }, + "transform": { + "decoratorMetadata": true, + "legacyDecorator": true + }, + "keepClassNames": true, + "externalHelpers": true, + "loose": true + }, + "module": { + "type": "es6" + }, + "sourceMaps": true, + "exclude": [".*\\.spec.tsx?$", ".*\\.step.ts$", ".*\\.test.tsx?$", ".*.js$"] +} diff --git a/libs/common/contracts/events/pathway/biome.json b/libs/common/contracts/events/pathway/biome.json new file mode 100644 index 00000000..7a38d8eb --- /dev/null +++ b/libs/common/contracts/events/pathway/biome.json @@ -0,0 +1,17 @@ +{ + "$schema": "../../../../../node_modules/@biomejs/biome/configuration_schema.json", + "extends": ["../../../../../biome.json"], + "linter": { + "rules": { + "nursery": { + "noRestrictedImports": { + "options": { + "paths": {} + }, + "level": "error" + } + } + } + }, + "overrides": [{}] +} diff --git a/libs/common/contracts/events/pathway/cucumber.js b/libs/common/contracts/events/pathway/cucumber.js new file mode 100644 index 00000000..4825e151 --- /dev/null +++ b/libs/common/contracts/events/pathway/cucumber.js @@ -0,0 +1,11 @@ +module.exports = { + default: { + paths: ['libs/common/contracts/events/pathway/src/lib/**/*.feature'], + requireModule: ['ts-node/register', 'tsconfig-paths/register'], + require: ['libs/common/contracts/events/pathway/src/lib/**/*.step.ts'], + format: [ + 'json:dist/reports/libs/common/contracts/events/pathway/test-feature/index.json', + 'html:dist/reports/libs/common/contracts/events/pathway/test-feature/index.html', + ], + }, +}; diff --git a/libs/common/contracts/events/pathway/package.json b/libs/common/contracts/events/pathway/package.json new file mode 100644 index 00000000..51716e28 --- /dev/null +++ b/libs/common/contracts/events/pathway/package.json @@ -0,0 +1,9 @@ +{ + "name": "@bewoak/common-contracts-events-pathway", + "version": "0.0.1", + "dependencies": { + "@swc/helpers": "~0.5.11" + }, + "main": "./src/index.js", + "typings": "./src/index.d.ts" +} diff --git a/libs/common/contracts/events/pathway/project.json b/libs/common/contracts/events/pathway/project.json new file mode 100644 index 00000000..768608f5 --- /dev/null +++ b/libs/common/contracts/events/pathway/project.json @@ -0,0 +1,50 @@ +{ + "name": "common-contracts-events-pathway", + "$schema": "../../../../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "libs/common/contracts/events/pathway/src", + "projectType": "library", + "targets": { + "build": { + "executor": "@nx/js:swc", + "outputs": ["{options.outputPath}"], + "options": { + "outputPath": "dist/libs/common/contracts/events/pathway", + "main": "libs/common/contracts/events/pathway/src/index.ts", + "tsConfig": "libs/common/contracts/events/pathway/tsconfig.lib.json", + "assets": [] + } + }, + "nx-release-publish": { + "options": { + "packageRoot": "dist/{projectRoot}" + } + }, + "lint": { + "executor": "nx:run-commands", + "options": { + "command": "bun run biome check --write {projectRoot} --config-path={projectRoot}/biome.json" + } + }, + "test": { + "executor": "nx:run-commands", + "options": { + "command": "bun test --coverage --coverage-dir=dist/reports/{projectRoot}/coverage --coverage-reporter=lcov {projectRoot}" + } + }, + "test-feature": { + "executor": "nx:run-commands", + "options": { + "command": "TS_NODE_PROJECT='{projectRoot}/tsconfig.spec.json' bun run cucumber-js --config={projectRoot}/cucumber.js" + } + } + }, + "tags": ["type:common:configs:server:swagger"], + "release": { + "version": { + "generatorOptions": { + "packageRoot": "dist/{projectRoot}", + "currentVersionResolver": "git-tag" + } + } + } +} diff --git a/libs/common/contracts/events/pathway/src/index.ts b/libs/common/contracts/events/pathway/src/index.ts new file mode 100644 index 00000000..b114e765 --- /dev/null +++ b/libs/common/contracts/events/pathway/src/index.ts @@ -0,0 +1 @@ +export { CCEPPathwayInitializedEvent } from './lib/initialized/pathway-initialized.event'; diff --git a/libs/common/contracts/events/pathway/src/lib/initialized/pathway-initialized.constants.ts b/libs/common/contracts/events/pathway/src/lib/initialized/pathway-initialized.constants.ts new file mode 100644 index 00000000..69fdac75 --- /dev/null +++ b/libs/common/contracts/events/pathway/src/lib/initialized/pathway-initialized.constants.ts @@ -0,0 +1 @@ +export const CCEP_EVENT_TYPE_PATHWAY_INITIALIZED = 'PathwayInitialized' as const; diff --git a/libs/common/contracts/events/pathway/src/lib/initialized/pathway-initialized.event.ts b/libs/common/contracts/events/pathway/src/lib/initialized/pathway-initialized.event.ts new file mode 100644 index 00000000..d2e9d88c --- /dev/null +++ b/libs/common/contracts/events/pathway/src/lib/initialized/pathway-initialized.event.ts @@ -0,0 +1,12 @@ +import { CCEP_EVENT_TYPE_PATHWAY_INITIALIZED } from './pathway-initialized.constants'; + +export class CCEPPathwayInitializedEvent { + public readonly eventType = CCEP_EVENT_TYPE_PATHWAY_INITIALIZED; + + constructor( + public readonly description: string, + public readonly pathwayId: string, + public readonly researchField: string, + public readonly title: string + ) {} +} diff --git a/libs/common/contracts/events/pathway/tsconfig.json b/libs/common/contracts/events/pathway/tsconfig.json new file mode 100644 index 00000000..679400da --- /dev/null +++ b/libs/common/contracts/events/pathway/tsconfig.json @@ -0,0 +1,22 @@ +{ + "extends": "../../../../../tsconfig.base.json", + "compilerOptions": { + "module": "es2022", + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitOverride": true, + "noPropertyAccessFromIndexSignature": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true + }, + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.lib.json" + }, + { + "path": "./tsconfig.spec.json" + } + ] +} diff --git a/libs/common/contracts/events/pathway/tsconfig.lib.json b/libs/common/contracts/events/pathway/tsconfig.lib.json new file mode 100644 index 00000000..5c40769b --- /dev/null +++ b/libs/common/contracts/events/pathway/tsconfig.lib.json @@ -0,0 +1,11 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../../../../dist/out-tsc", + "types": ["node"], + "composite": true, + "declaration": true + }, + "include": ["src/**/*.ts"], + "exclude": ["src/**/*.spec.ts", "src/**/*.test.ts", "src/**/*.step.ts"] +} diff --git a/libs/common/contracts/events/pathway/tsconfig.spec.json b/libs/common/contracts/events/pathway/tsconfig.spec.json new file mode 100644 index 00000000..a8c23a46 --- /dev/null +++ b/libs/common/contracts/events/pathway/tsconfig.spec.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "module": "CommonJS", + "esModuleInterop": true, + "composite": true, + "declaration": true + }, + "include": ["src/**/*.ts"] +} diff --git a/libs/common/contracts/http/.gitkeep b/libs/common/contracts/http/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/libs/pathway-design/server/pathway/application/project.json b/libs/pathway-design/server/pathway/application/project.json index 7a226e23..d2329ae1 100644 --- a/libs/pathway-design/server/pathway/application/project.json +++ b/libs/pathway-design/server/pathway/application/project.json @@ -8,7 +8,7 @@ "executor": "@nx/js:swc", "outputs": ["{options.outputPath}"], "options": { - "outputPath": "dist/libs/pathway-design/server/pathway/business/usecases/init", + "outputPath": "dist/libs/pathway-design/server/pathway/application", "main": "libs/pathway-design/server/pathway/application/src/index.ts", "tsConfig": "libs/pathway-design/server/pathway/application/tsconfig.lib.json", "assets": [] diff --git a/libs/pathway-design/server/pathway/application/src/index.ts b/libs/pathway-design/server/pathway/application/src/index.ts index 5634ae43..726bddf8 100644 --- a/libs/pathway-design/server/pathway/application/src/index.ts +++ b/libs/pathway-design/server/pathway/application/src/index.ts @@ -7,3 +7,4 @@ export { PDSPAChangeTitlePathwayCommand } from './lib/change-title/command/chang export { PDSPAChangeTitlePathwayCommandHandler } from './lib/change-title/command/change-title-pathway.command-handler'; export { PDSPAChangeTitlePathwayService } from './lib/change-title/service/change-title-pathway.service'; export { PDSPACUChangeTitlePathwayUseCase } from './lib/change-title/usecase/change-title-pathway.usecase'; +export { PDSPAInitializePathwayEventHandler } from './lib/initialize/event-handler/initialize-pathway.event-handler'; diff --git a/libs/pathway-design/server/pathway/application/src/lib/initialize/event-handler/initialize-pathway.event-handler.ts b/libs/pathway-design/server/pathway/application/src/lib/initialize/event-handler/initialize-pathway.event-handler.ts new file mode 100644 index 00000000..f70a01e4 --- /dev/null +++ b/libs/pathway-design/server/pathway/application/src/lib/initialize/event-handler/initialize-pathway.event-handler.ts @@ -0,0 +1,20 @@ +import { CCEPPathwayInitializedEvent } from '@bewoak/common-contracts-events-pathway'; +import { PDSPBEPathwayInitializedEvent } from '@bewoak/pathway-design-server-pathway-business'; +import { EventsHandler, type IEventHandler } from '@nestjs/cqrs'; +// biome-ignore lint/style/useImportType: +import { EventEmitter2 } from '@nestjs/event-emitter'; + +@EventsHandler(PDSPBEPathwayInitializedEvent) +export class PDSPAInitializePathwayEventHandler implements IEventHandler { + constructor(private readonly eventEmitter: EventEmitter2) {} + + handle(pDSPBEPathwayInitializedEvent: PDSPBEPathwayInitializedEvent) { + const event = new CCEPPathwayInitializedEvent( + pDSPBEPathwayInitializedEvent.payload.description, + pDSPBEPathwayInitializedEvent.payload.pathwayId, + pDSPBEPathwayInitializedEvent.payload.researchField, + pDSPBEPathwayInitializedEvent.payload.title + ); + this.eventEmitter.emit(event.eventType, event); + } +} 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 e4c2888e..09cb0be8 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 @@ -8,7 +8,7 @@ import type { PDSPAInitializePathwayCommand } from '../command/initialize-pathwa export class PDSPAInitializePathwayService { constructor(private readonly commandBus: CommandBus) {} - init(pDSPAInitializePathwayCommand: PDSPAInitializePathwayCommand) { + initialize(pDSPAInitializePathwayCommand: PDSPAInitializePathwayCommand) { return this.commandBus.execute(pDSPAInitializePathwayCommand); } } diff --git a/libs/pathway-design/server/pathway/business/src/index.ts b/libs/pathway-design/server/pathway/business/src/index.ts index 50cce7fd..65793914 100644 --- a/libs/pathway-design/server/pathway/business/src/index.ts +++ b/libs/pathway-design/server/pathway/business/src/index.ts @@ -1,4 +1,5 @@ export { PDSPBEPathwayEntity } from './lib/entities/pathway'; +export { PDSPBEPathwayInitializedEvent } from './lib/events/pathway-initialized.event'; export { pDSPBFPathwayFactory } from './lib/factories/pathway.factory'; export { PDSPBP_CHANGE_TITLE_PATHWAY_PERSISTENCE_PORT, diff --git a/libs/pathway-design/server/pathway/business/src/lib/entities/pathway.ts b/libs/pathway-design/server/pathway/business/src/lib/entities/pathway.ts index 22ac5020..8c27378e 100644 --- a/libs/pathway-design/server/pathway/business/src/lib/entities/pathway.ts +++ b/libs/pathway-design/server/pathway/business/src/lib/entities/pathway.ts @@ -29,7 +29,7 @@ export class PDSPBEPathwayEntity extends AggregateRoot { return this.#title?.value ?? ''; } - init({ id, title, description, researchField }: InitializePathwayParams) { + initialize({ id, title, description, researchField }: InitializePathwayParams) { this.#description = description; this.#id = id; this.#researchField = researchField; @@ -37,10 +37,10 @@ export class PDSPBEPathwayEntity extends AggregateRoot { this.apply( new PDSPBEPathwayInitializedEvent(this.id, { - pathwayId: this.id, - title: this.title, description: this.description, + pathwayId: this.id, researchField: this.researchField, + title: this.title, }), { skipHandler: true, diff --git a/libs/pathway-design/server/pathway/business/src/lib/events/pathway-initialized.event.ts b/libs/pathway-design/server/pathway/business/src/lib/events/pathway-initialized.event.ts index 40e20313..638e9a46 100644 --- a/libs/pathway-design/server/pathway/business/src/lib/events/pathway-initialized.event.ts +++ b/libs/pathway-design/server/pathway/business/src/lib/events/pathway-initialized.event.ts @@ -6,6 +6,11 @@ export class PDSPBEPathwayInitializedEvent implements CEEvent { constructor( public readonly aggregateId: string, - public readonly payload: Record + public readonly payload: { + description: string; + pathwayId: string; + researchField: string; + title: string; + } ) {} } diff --git a/libs/pathway-design/server/pathway/business/src/lib/factories/pathway.factory.ts b/libs/pathway-design/server/pathway/business/src/lib/factories/pathway.factory.ts index c7fd9d57..6aeccf5b 100644 --- a/libs/pathway-design/server/pathway/business/src/lib/factories/pathway.factory.ts +++ b/libs/pathway-design/server/pathway/business/src/lib/factories/pathway.factory.ts @@ -20,7 +20,7 @@ export const pDSPBFPathwayFactory = ({ const uuid = idValue ?? randomUUID(); const id = new PathwayIdValueObject(uuid); - pathway.init({ + pathway.initialize({ id, title, description, diff --git a/libs/pathway-design/server/pathway/business/src/lib/specs/initialize/initialize-pathway.step.ts b/libs/pathway-design/server/pathway/business/src/lib/specs/initialize/initialize-pathway.step.ts index fc2eca48..d4a51bd0 100644 --- a/libs/pathway-design/server/pathway/business/src/lib/specs/initialize/initialize-pathway.step.ts +++ b/libs/pathway-design/server/pathway/business/src/lib/specs/initialize/initialize-pathway.step.ts @@ -30,7 +30,7 @@ export default class PathwaySteps { const researchField = new ResearchFieldValueObjects(data.researchField); this.pDSPBEPathwayEntity = new PDSPBEPathwayEntity(); - this.pDSPBEPathwayEntity.init({ + this.pDSPBEPathwayEntity.initialize({ id, title, description, @@ -56,7 +56,7 @@ export default class PathwaySteps { this.pDSPBEPathwayEntity = new PDSPBEPathwayEntity(); this.applyMethodSpy = sinon.spy(this.pDSPBEPathwayEntity, 'apply'); - this.pDSPBEPathwayEntity.init({ + this.pDSPBEPathwayEntity.initialize({ id, title, description, 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 008d2ac0..e5863b57 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 @@ -31,7 +31,7 @@ export class InitializePathwayController { execute( @Body() initializePathwayRequestBodyDto: InitializePathwayRequestBodyDto ): Promise { - return this.pDSPAInitializePathwayService.init( + return this.pDSPAInitializePathwayService.initialize( new PDSPAInitializePathwayCommand( initializePathwayRequestBodyDto.description, initializePathwayRequestBodyDto.researchField, diff --git a/libs/pathway-design/server/pathway/interface-adapters/src/lib/initialize/initialize-pathway-interface-adapters.module.ts b/libs/pathway-design/server/pathway/interface-adapters/src/lib/initialize/initialize-pathway-interface-adapters.module.ts index 354da6c9..4f45b0fe 100644 --- a/libs/pathway-design/server/pathway/interface-adapters/src/lib/initialize/initialize-pathway-interface-adapters.module.ts +++ b/libs/pathway-design/server/pathway/interface-adapters/src/lib/initialize/initialize-pathway-interface-adapters.module.ts @@ -1,6 +1,7 @@ import { PDSPAIUInitializePathwayUsecase, PDSPAInitializePathwayCommandHandler, + PDSPAInitializePathwayEventHandler, PDSPAInitializePathwayService, } from '@bewoak/pathway-design-server-pathway-application'; import { type DynamicModule, Module, type Type } from '@nestjs/common'; @@ -8,7 +9,12 @@ import { InitializePathwayController } from './controller/initialize-pathway.con @Module({ controllers: [InitializePathwayController], - providers: [PDSPAInitializePathwayCommandHandler, PDSPAInitializePathwayService, PDSPAIUInitializePathwayUsecase], + providers: [ + PDSPAIUInitializePathwayUsecase, + PDSPAInitializePathwayCommandHandler, + PDSPAInitializePathwayEventHandler, + PDSPAInitializePathwayService, + ], exports: [PDSPAInitializePathwayService], }) // biome-ignore lint/complexity/noStaticOnlyClass: not pertinent here because this is a module diff --git a/libs/pathway-design/server/pathway/interface-adapters/src/lib/initialize/routes/initialize-pathway.route.ts b/libs/pathway-design/server/pathway/interface-adapters/src/lib/initialize/routes/initialize-pathway.route.ts new file mode 100644 index 00000000..575cca38 --- /dev/null +++ b/libs/pathway-design/server/pathway/interface-adapters/src/lib/initialize/routes/initialize-pathway.route.ts @@ -0,0 +1,4 @@ +export const pDSPIAPathwayPathSuffix = 'pathway'; +export const pDSPIAPathwayTag = 'Pathway'; +export const pDSPIAPathwayPath = `${pDSPIAPathwayPathSuffix}`; +export const pDSPIAInitializePathwayPath = 'initialize'; diff --git a/package.json b/package.json index 4c8a93d8..5f7428f9 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,7 @@ "@nestjs/common": "^10.0.2", "@nestjs/core": "^10.0.2", "@nestjs/cqrs": "^10.2.7", + "@nestjs/event-emitter": "^2.0.4", "@nestjs/platform-express": "^10.0.2", "@nestjs/swagger": "^7.4.0", "@swc/cli": "^0.4.0", diff --git a/tsconfig.base.json b/tsconfig.base.json index cb5f8356..edc6bb14 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -12,6 +12,7 @@ "paths": { "@bewoak/common-configs-server-env": ["libs/common/configs/server/env/src/index.ts"], "@bewoak/common-configs-server-swagger": ["libs/common/configs/server/swagger/src/index.ts"], + "@bewoak/common-contracts-events-pathway": ["libs/common/contracts/events/pathway/src/index.ts"], "@bewoak/common-events": ["libs/common/events/src/index.ts"], "@bewoak/common-tools-server-http-exceptions": ["libs/common/tools/server/http-exceptions/src/index.ts"], "@bewoak/pathway-design-common-business-pathway-rules": [