import { Application, Request, Response } from "express";
import { DateTime } from "luxon";
/**

Registra endpoints de liveness/readiness.

/__health: siempre 200 mientras el proceso esté vivo.

/__ready : 200 si ready=true, 503 en caso contrario.
*/
export function registerHealthRoutes(app: Application, getStatus: () => { ready: boolean }): void {
  // Liveness probe: indica que el proceso responde
  app.get("/__health", (_req: Request, res: Response) => {
    // Información mínima y no sensible
    res.status(200).json({
      status: "ok",
      time: DateTime.now().toISO(),
    });
  });

  // Readiness probe: indica que el servidor está listo para tráfico
  app.get("/__ready", (_req: Request, res: Response) => {
    const { ready } = getStatus();
    if (ready) {
      return res.status(200).json({
        status: "ready",
        time: DateTime.now().toISO(),
      });
    }
    return res.status(503).json({
      status: "not_ready",
      time: DateTime.now().toISO(),
    });
  });
}
