-
Notifications
You must be signed in to change notification settings - Fork 0
/
my-cqrs.module.ts
35 lines (31 loc) · 953 Bytes
/
my-cqrs.module.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import { Module, OnModuleInit } from '@nestjs/common';
import { ModuleRef } from '@nestjs/core';
import { CqrsModule } from '@nestjs/cqrs';
import { ExplorerService } from '@nestjs/cqrs/dist/services/explorer.service';
@Module({
imports: [CqrsModule],
providers: [ExplorerService],
exports: [CqrsModule],
})
export class MyCqrsModule implements OnModuleInit {
constructor(
private readonly explorer: ExplorerService,
private moduleRef: ModuleRef,
) {}
onModuleInit() {
const { events } = this.explorer.explore();
events.forEach(this.wrapWithTryCatch.bind(this));
}
private wrapWithTryCatch(handler): void {
const instance = this.moduleRef.get(handler, { strict: false });
const methodRef = instance.handle;
const newMethod = async (event) => {
try {
await methodRef.call(handler, event);
} catch (e) {
console.error('yo');
}
};
instance.handle = newMethod;
}
}