From 1e2c7ab092081d65395d7de92a5006bc3f5c0348 Mon Sep 17 00:00:00 2001 From: Daneryl Date: Thu, 30 Jan 2025 15:16:49 +0100 Subject: [PATCH] IdGenerator as dependency instead of DS.nextId --- .../application/PXCreateExtractor.ts | 4 +- .../specs/PXCreateExtractor.spec.ts | 4 +- .../domain/PXExtractorDataSource.ts | 1 - .../MongoPXExtractorsDataSource.ts | 53 +------------------ 4 files changed, 8 insertions(+), 54 deletions(-) diff --git a/app/api/paragraphExtraction/application/PXCreateExtractor.ts b/app/api/paragraphExtraction/application/PXCreateExtractor.ts index f956d75bb4..16fe06e30a 100644 --- a/app/api/paragraphExtraction/application/PXCreateExtractor.ts +++ b/app/api/paragraphExtraction/application/PXCreateExtractor.ts @@ -7,6 +7,7 @@ import { PXExtractor } from '../domain/PXExtractor'; import { PXExtractorsDataSource } from '../domain/PXExtractorDataSource'; import { SourceTemplateNotFoundError } from '../domain/SourceTemplateNotFoundError'; import { TargetTemplateNotFoundError } from '../domain/TargetTemplateNotFoundError'; +import { IdGenerator } from 'api/common.v2/contracts/IdGenerator'; type Input = z.infer; type Output = PXExtractor; @@ -14,6 +15,7 @@ type Output = PXExtractor; type Dependencies = { templatesDS: TemplatesDataSource; extractorDS: PXExtractorsDataSource; + idGenerator: IdGenerator; }; const InputSchema = z.object({ @@ -39,7 +41,7 @@ export class PXCreateExtractor implements UseCase { } const extractor = new PXExtractor({ - id: this.dependencies.extractorDS.nextId(), + id: this.dependencies.idGenerator.generate(), targetTemplate, sourceTemplate, }); diff --git a/app/api/paragraphExtraction/application/specs/PXCreateExtractor.spec.ts b/app/api/paragraphExtraction/application/specs/PXCreateExtractor.spec.ts index 2bdabfaae8..e92ff98825 100644 --- a/app/api/paragraphExtraction/application/specs/PXCreateExtractor.spec.ts +++ b/app/api/paragraphExtraction/application/specs/PXCreateExtractor.spec.ts @@ -2,6 +2,7 @@ import { ObjectId } from 'mongodb'; import { DefaultTransactionManager } from 'api/common.v2/database/data_source_defaults'; import { getConnection } from 'api/common.v2/database/getConnectionForCurrentTenant'; +import { MongoIdHandler } from 'api/common.v2/database/MongoIdGenerator'; import { DefaultTemplatesDataSource } from 'api/templates.v2/database/data_source_defaults'; import { getFixturesFactory } from 'api/utils/fixturesFactory'; import db from 'api/utils/testing_db'; @@ -20,12 +21,13 @@ const setUpUseCase = () => { const transaction = DefaultTransactionManager(); const templatesDS = DefaultTemplatesDataSource(transaction); - const extractorDS = new MongoPXExtractorsDataSource(getConnection(), transaction, templatesDS); + const extractorDS = new MongoPXExtractorsDataSource(getConnection(), transaction); return { createExtractor: new PXCreateExtractor({ extractorDS, templatesDS, + idGenerator: MongoIdHandler, }), }; }; diff --git a/app/api/paragraphExtraction/domain/PXExtractorDataSource.ts b/app/api/paragraphExtraction/domain/PXExtractorDataSource.ts index 8b114653b0..3644608639 100644 --- a/app/api/paragraphExtraction/domain/PXExtractorDataSource.ts +++ b/app/api/paragraphExtraction/domain/PXExtractorDataSource.ts @@ -2,5 +2,4 @@ import { PXExtractor } from './PXExtractor'; export interface PXExtractorsDataSource { create(extractor: PXExtractor): Promise; - nextId(): string; } diff --git a/app/api/paragraphExtraction/infrastructure/MongoPXExtractorsDataSource.ts b/app/api/paragraphExtraction/infrastructure/MongoPXExtractorsDataSource.ts index 864f2c10c9..b42d71aad9 100644 --- a/app/api/paragraphExtraction/infrastructure/MongoPXExtractorsDataSource.ts +++ b/app/api/paragraphExtraction/infrastructure/MongoPXExtractorsDataSource.ts @@ -1,10 +1,7 @@ -import { Db, ObjectId } from 'mongodb'; import { MongoDataSource } from 'api/common.v2/database/MongoDataSource'; -import { TemplatesDataSource } from 'api/templates.v2/contracts/TemplatesDataSource'; -import { MongoTransactionManager } from 'api/common.v2/database/MongoTransactionManager'; -import { MongoResultSet } from 'api/common.v2/database/MongoResultSet'; -import { PXExtractorsDataSource } from '../domain/PXExtractorDataSource'; +import { ObjectId } from 'mongodb'; import { PXExtractor } from '../domain/PXExtractor'; +import { PXExtractorsDataSource } from '../domain/PXExtractorDataSource'; import { MongoPXExtractorDBO } from './MongoPXExtractorDBO'; export const mongoExtractorsCollectionName = 'px_extractors'; @@ -13,50 +10,8 @@ export class MongoPXExtractorsDataSource extends MongoDataSource implements PXExtractorsDataSource { - private templatesDS: TemplatesDataSource; - protected collectionName = mongoExtractorsCollectionName; - constructor( - db: Db, - transactionManager: MongoTransactionManager, - templatesDS: TemplatesDataSource - ) { - super(db, transactionManager); - - this.templatesDS = templatesDS; - } - - getById(id: string): Promise { - throw new Error('Method not implemented.'); - } - - async getAll() { - const templates = await this.templatesDS.getAll().all(); - - const extractors = new MongoResultSet(this.getCollection().find({}), dbo => { - const sourceTemplate = templates.find( - template => template.id === dbo.sourceTemplateId.toString() - ); - - const targetTemplate = templates.find( - template => template.id === dbo.targetTemplateId.toString() - ); - - if (!sourceTemplate || !targetTemplate) { - throw new Error('Template does not exist'); - } - - return new PXExtractor({ - id: dbo._id.toString(), - sourceTemplate, - targetTemplate, - }); - }); - - return extractors; - } - async create(extractor: PXExtractor): Promise { const mongoExtractor: MongoPXExtractorDBO = { _id: new ObjectId(extractor.id), @@ -66,8 +21,4 @@ export class MongoPXExtractorsDataSource await this.getCollection().insertOne(mongoExtractor); } - - nextId(): string { - return new ObjectId().toString(); - } }