Skip to content

Commit 383c238

Browse files
committed
feat: get transformer from TransformerService
1 parent ed2427c commit 383c238

File tree

3 files changed

+23
-2
lines changed

3 files changed

+23
-2
lines changed

src/errors/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
export * from './key-not-found.error';
2+
export * from './transformer-not-found.error';
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
export class TransformerNotFoundError extends Error {
2+
public static withType(type: string) {
3+
return new TransformerNotFoundError(`Missed ${type} event map transformer`);
4+
}
5+
}

src/services/transformer.service.ts

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
1+
import { ResolvedEvent } from '@eventstore/db-client';
12
import { Injectable } from '@nestjs/common';
23
import { ModulesContainer } from '@nestjs/core';
34

4-
import { TransformerRepo } from '../interfaces/transformer.type';
5+
import { TransformerNotFoundError } from '../errors';
6+
import { Transformer, TransformerRepo } from '../interfaces';
57

68
export const EVENT_STORE_TRANSFORMERS_TOKEN = 'EVENT_STORE_TRANSFORMERS_TOKEN';
79

810
@Injectable()
911
export class TransformerService {
10-
public readonly repo: TransformerRepo;
12+
private readonly repo: TransformerRepo;
1113

1214
constructor(private readonly modules: ModulesContainer) {
1315
const transformers = [...this.modules.values()]
@@ -17,4 +19,17 @@ export class TransformerService {
1719

1820
this.repo = Object.fromEntries(transformers);
1921
}
22+
23+
public getTransformerToEvent(
24+
resolvedEvent: ResolvedEvent,
25+
): Transformer | null {
26+
const type = resolvedEvent.event.type;
27+
28+
const transformer = this.repo[type];
29+
if (!transformer) {
30+
throw TransformerNotFoundError.withType(type);
31+
}
32+
33+
return transformer;
34+
}
2035
}

0 commit comments

Comments
 (0)