All files / src/modules/common/event/controllers event.api.controller.ts

0% Statements 0/20
100% Branches 0/0
0% Functions 0/4
0% Lines 0/18

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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59                                                                                                                     
import { Body, Controller, Inject, Post } from '@nestjs/common';
import { EventEmitter2 } from '@nestjs/event-emitter';
import { ApiBody, ApiOperation, ApiTags } from '@nestjs/swagger';
import { EventTypeEnum, KAFKA_SERVICE_TOKEN, RABBITMQ_SERVICE_TOKEN } from '../shared/event.const';
import { EmitMessageDto } from '../shared/event.dto';
import { IKafkaService, IRabbitMQService } from '../shared/event.interface';
 
@ApiTags('Event')
@Controller({ path: 'api/event' })
export class EventApiController {
  constructor(
    private readonly eventEmitter: EventEmitter2,
    @Inject(RABBITMQ_SERVICE_TOKEN) private readonly rabbitMQService: IRabbitMQService,
    @Inject(KAFKA_SERVICE_TOKEN) private readonly kafkaService: IKafkaService,
  ) {}
 
  @Post('emit-message')
  @ApiOperation({
    operationId: 'emitMessage',
    summary: 'Emit a sample message.',
  })
  @ApiBody({
    description: EmitMessageDto.name,
    type: EmitMessageDto,
  })
  emitMessage(@Body() body: EmitMessageDto) {
    this.eventEmitter.emit(EventTypeEnum.Base, body);
    return 'message sent.';
  }
 
  @Post('rabbitmq/emit-message')
  @ApiOperation({
    operationId: 'rabbitmqEmitMessage',
    summary: 'Emit a sample message to RabbitMQ.',
  })
  @ApiBody({
    description: EmitMessageDto.name,
    type: EmitMessageDto,
  })
  async rabbitmqEmitMessage(@Body() body: EmitMessageDto) {
    await this.rabbitMQService.emitMessage(body);
    return 'message sent.';
  }
 
  @Post('kafka/emit-message')
  @ApiOperation({
    operationId: 'kafkaEmitMessage',
    summary: 'Emit a sample message to Kafka.',
  })
  @ApiBody({
    description: EmitMessageDto.name,
    type: EmitMessageDto,
  })
  async kafkaEmitMessage(@Body() body: EmitMessageDto) {
    await this.kafkaService.emitMessage(body);
    return 'message sent.';
  }
}