Skip to content

Commit

Permalink
IdGenerator as dependency instead of DS.nextId
Browse files Browse the repository at this point in the history
  • Loading branch information
daneryl committed Jan 30, 2025
1 parent a492fd8 commit 1e2c7ab
Show file tree
Hide file tree
Showing 4 changed files with 8 additions and 54 deletions.
4 changes: 3 additions & 1 deletion app/api/paragraphExtraction/application/PXCreateExtractor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,15 @@ 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<typeof InputSchema>;
type Output = PXExtractor;

type Dependencies = {
templatesDS: TemplatesDataSource;
extractorDS: PXExtractorsDataSource;
idGenerator: IdGenerator;
};

const InputSchema = z.object({
Expand All @@ -39,7 +41,7 @@ export class PXCreateExtractor implements UseCase<Input, Output> {
}

const extractor = new PXExtractor({
id: this.dependencies.extractorDS.nextId(),
id: this.dependencies.idGenerator.generate(),
targetTemplate,
sourceTemplate,
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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';
Expand All @@ -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,
}),
};
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,4 @@ import { PXExtractor } from './PXExtractor';

export interface PXExtractorsDataSource {
create(extractor: PXExtractor): Promise<void>;
nextId(): string;
}
Original file line number Diff line number Diff line change
@@ -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';
Expand All @@ -13,50 +10,8 @@ export class MongoPXExtractorsDataSource
extends MongoDataSource<MongoPXExtractorDBO>
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<PXExtractor | undefined> {
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<void> {
const mongoExtractor: MongoPXExtractorDBO = {
_id: new ObjectId(extractor.id),
Expand All @@ -66,8 +21,4 @@ export class MongoPXExtractorsDataSource

await this.getCollection().insertOne(mongoExtractor);
}

nextId(): string {
return new ObjectId().toString();
}
}

0 comments on commit 1e2c7ab

Please sign in to comment.