first commit

This commit is contained in:
Дмитрий Мамедов
2026-06-10 16:23:41 +03:00
commit f37733a5c9
70 changed files with 16338 additions and 0 deletions

View File

@@ -0,0 +1,9 @@
import { Global, Module } from '@nestjs/common';
import { EventsService } from './events.service';
@Global()
@Module({
providers: [EventsService],
exports: [EventsService],
})
export class EventsModule {}

View File

@@ -0,0 +1,35 @@
import { Injectable } from '@nestjs/common';
import {
ClientProxy,
ClientProxyFactory,
Transport,
} from '@nestjs/microservices';
import { ConfigService } from '@nestjs/config';
import { PinoLogger } from 'nestjs-pino';
@Injectable()
export class EventsService {
private client: ClientProxy;
constructor(
private readonly configService: ConfigService,
private readonly logger: PinoLogger,
) {
this.logger.setContext(EventsService.name);
this.client = ClientProxyFactory.create({
transport: Transport.RMQ,
options: {
urls: [this.configService.get<string>('app.rabbitmq.url')!],
queue: 'sso_events',
queueOptions: { durable: true },
},
});
}
emit(pattern: string, data: Record<string, unknown>): void {
this.client.emit(pattern, data).subscribe({
error: (err: Error) =>
this.logger.error({ err, pattern }, 'Failed to emit event'),
});
}
}