import { Controller, Body, Logger } from "@nestjs/common";
import { EventsGateway } from "./events.gateway";
import { MessagePattern } from "@nestjs/microservices";
import { CloudEventDto } from "@ocm-engine/dtos";
import { ConfigService } from "@nestjs/config";
import { IGateway } from "@ocm-engine/config";

@Controller()
export class AppController {
  private gatewayConfig: IGateway;
  private readonly logger: Logger = new Logger(AppController.name);

  constructor(
    private eventsGateway: EventsGateway,
    private readonly configService: ConfigService,
  ) {
    this.gatewayConfig = configService.get<IGateway>("gateway");
  }

  @MessagePattern(process.env["GATEWAY_MESSAGE_PATTERN"])
  create<T>(@Body() dto: CloudEventDto<T>): string {
    this.logger.debug(
      `received event from agent, sending to web socket ${JSON.stringify(
        dto,
        null,
        2,
      )}`,
    );

    this.eventsGateway.sentEvent(dto);
    return "ok";
  }
}