36 lines
1012 B
TypeScript
36 lines
1012 B
TypeScript
|
|
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(),
|
||
|
|
});
|
||
|
|
});
|
||
|
|
}
|