- Fix DI issues: circular MCP module dependency, EventBus type import, SearchModule provider, CacheService metric counters placement - Fix Express 5 readonly req.query in SanitizeInputMiddleware - Fix Typesense client lazy initialization (getter instead of constructor) - Fix MinIO bucket init error handling (non-fatal on 403) - Fix missing class-validator decorators on bigint DTO fields (priceVND, amountVND) - Fix subscription plan 404 (was returning 500 for invalid tier) - Disable CSRF and raise rate limits in test environment - Update E2E tests to match actual API response shapes - Update CI workflow with Redis, Typesense, MinIO services and env vars All 101 API E2E tests now pass against Docker dev environment. Co-Authored-By: Paperclip <noreply@paperclip.ing>
23 lines
607 B
TypeScript
23 lines
607 B
TypeScript
import { Injectable } from '@nestjs/common';
|
|
import { EventEmitter2 } from '@nestjs/event-emitter';
|
|
import { type DomainEvent } from '../domain/domain-event';
|
|
|
|
@Injectable()
|
|
export class EventBusService {
|
|
constructor(private readonly eventEmitter: EventEmitter2) {}
|
|
|
|
publish(event: DomainEvent): void {
|
|
this.eventEmitter.emit(event.eventName, event);
|
|
}
|
|
|
|
publishAll(events: DomainEvent[]): void {
|
|
for (const event of events) {
|
|
this.publish(event);
|
|
}
|
|
}
|
|
|
|
async publishAsync(event: DomainEvent): Promise<void> {
|
|
await this.eventEmitter.emitAsync(event.eventName, event);
|
|
}
|
|
}
|