import {
  Controller,
  Get,
  InternalServerErrorException,
  Logger,
} from "@nestjs/common";
import { ApiTags, ApiOperation, ApiResponse } from "@nestjs/swagger";

@ApiTags("test")
@Controller("test")
export class TestErrorController {
  private readonly logger = new Logger(TestErrorController.name);

  @Get("error")
  @ApiOperation({ summary: "Test endpoint that always throws an error" })
  @ApiResponse({ status: 500, description: "Internal Server Error" })
  triggerError(): never {
    this.logger.debug("About to throw a test error");
    this.logger.error(
      "Test error triggered",
      new Error("This is a test error").stack,
    );
    throw new InternalServerErrorException("This is a test error");
  }

  @Get("levels")
  @ApiOperation({ summary: "Test different log levels" })
  @ApiResponse({ status: 200, description: "Logs different levels" })
  testLogLevels() {
    this.logger.debug("This is a debug message");
    this.logger.log("This is an info message");
    this.logger.warn("This is a warning message");
    this.logger.error("This is an error message");

    return { message: "All log levels tested" };
  }
}
