mirror of
https://github.com/hexastack/hexabot
synced 2025-05-07 22:34:46 +00:00
Merge branch '849-issue---make-eventemitter-part-of-the-base-repository' into 851-issue---make-logger-part-of-the-base-repository
This commit is contained in:
commit
6ccf2cb72d
@ -81,7 +81,8 @@ export abstract class BaseRepository<
|
||||
|
||||
private readonly leanOpts = { virtuals: true, defaults: true, getters: true };
|
||||
|
||||
eventEmitter: EventEmitter2;
|
||||
@Inject(EventEmitter2)
|
||||
readonly eventEmitter: EventEmitter2;
|
||||
|
||||
@Inject(LoggerService)
|
||||
readonly logger: LoggerService;
|
||||
@ -92,7 +93,6 @@ export abstract class BaseRepository<
|
||||
protected readonly populate: P[] = [],
|
||||
protected readonly clsPopulate?: new () => TFull,
|
||||
) {
|
||||
this.eventEmitter = new EventEmitter2();
|
||||
this.registerLifeCycleHooks();
|
||||
}
|
||||
|
||||
@ -175,15 +175,21 @@ export abstract class BaseRepository<
|
||||
const query = this as Query<DeleteResult, D, unknown, T, 'deleteMany'>;
|
||||
const criteria = query.getQuery();
|
||||
await repository.preDelete(query, criteria);
|
||||
await repository.eventEmitter.emitAsync(
|
||||
repository.getEventName(EHook.preDelete),
|
||||
query,
|
||||
criteria,
|
||||
);
|
||||
});
|
||||
|
||||
hooks.deleteMany.post.execute(async function (result: DeleteResult) {
|
||||
await repository.eventEmitter.emitAsync(
|
||||
repository.getEventName(EHook.postDelete),
|
||||
result,
|
||||
);
|
||||
const query = this as Query<DeleteResult, D, unknown, T, 'deleteMany'>;
|
||||
await repository.postDelete(query, result);
|
||||
await repository.eventEmitter.emitAsync(
|
||||
repository.getEventName(EHook.postDelete),
|
||||
query,
|
||||
result,
|
||||
);
|
||||
});
|
||||
|
||||
hooks.findOneAndUpdate.pre.execute(async function () {
|
||||
|
9
api/types/event-emitter.d.ts
vendored
9
api/types/event-emitter.d.ts
vendored
@ -330,11 +330,18 @@ declare module '@nestjs/event-emitter' {
|
||||
: `hook:${G}:${TNormalizedOrCustomized<G>}`
|
||||
: never;
|
||||
|
||||
type TEventName = Exclude<
|
||||
customEvent<EventNamespaces | ConstrainedString>,
|
||||
`${string}:*`
|
||||
>;
|
||||
|
||||
interface ListenerFn<G extends EventNamespaces | ConstrainedString> {
|
||||
(value: EventValueOf<G>, ...values: any[]): void;
|
||||
}
|
||||
|
||||
class EventEmitter2 {
|
||||
constructor(options?: ConstructorOptions);
|
||||
|
||||
emit<G extends EventNamespaces | ConstrainedString, H extends G>(
|
||||
customEvent: customEvent<G>,
|
||||
value: EventValueOf<H>,
|
||||
@ -396,6 +403,8 @@ declare module '@nestjs/event-emitter' {
|
||||
customEvent: customEvent<G>,
|
||||
listener: ListenerFn<H>,
|
||||
): this;
|
||||
|
||||
readonly event: TEventName;
|
||||
}
|
||||
|
||||
declare type OnEventMethodDecorator<
|
||||
|
Loading…
Reference in New Issue
Block a user