import { HttpException, HttpStatus } from "@nestjs/common";

// Excepcion tipada, nunca el stack trace del driver. Un tenant con el pool
// agotado (o la base caida/lenta) tiene que fallar RAPIDO y con un mensaje
// que un operador sin acceso al servidor pueda entender — no colgar el
// request indefinidamente ni devolver un error generico de MySQL.
export class TenantPoolExhaustedException extends HttpException {
  constructor(tenantId: number, motivo: string) {
    super(
      {
        statusCode: HttpStatus.SERVICE_UNAVAILABLE,
        error: "Servicio temporalmente ocupado",
        message:
          "Este taller esta recibiendo mas trafico del que puede atender en este momento. " +
          "Reintenta en unos segundos.",
        tenantId,
        motivo,
      },
      HttpStatus.SERVICE_UNAVAILABLE,
    );
  }
}
