All files / src/modules/common/event/services builtin-rabbitmq.service.ts

0% Statements 0/16
100% Branches 0/0
0% Functions 0/5
0% Lines 0/14

Press n or j to go to the next uncovered block, b, p or k for the previous block.

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                                                               
import { Inject, Injectable, OnModuleDestroy, OnModuleInit } from '@nestjs/common';
import { ClientRMQ } from '@nestjs/microservices';
import { instanceToPlain } from 'class-transformer';
import { firstValueFrom } from 'rxjs';
import { logger } from 'src/shared/logger';
import { RabbitPatternEnum } from '../shared/event.const';
import { EmitMessageDto } from '../shared/event.dto';
import { IRabbitMQService } from '../shared/event.interface';
import { RABBITMQ_TOKEN } from '../shared/event.provider';
 
@Injectable()
export class BuiltinRabbitMQService implements IRabbitMQService, OnModuleInit, OnModuleDestroy {
  constructor(@Inject(RABBITMQ_TOKEN) private readonly rabbitmqClient: ClientRMQ) {}
 
  onModuleInit() {
    this.rabbitmqClient.connect().then(() => {
      logger.info('Connected to RabbitMQ');
    });
  }
 
  onModuleDestroy() {
    this.rabbitmqClient.close();
    logger.info('RabbitMQ connection closed');
  }
 
  emitMessage(payload: EmitMessageDto) {
    return firstValueFrom(
      this.rabbitmqClient.emit(RabbitPatternEnum.Base, instanceToPlain(payload)),
    );
  }
}