/*********************************************************************************************************************************************************************** * File Name: health.controller.js * Type of Program: Controller * Description: HTTP layer for health check endpoints. No check logic lives here — * all checks and payload assembly are handled by services/health.service.js. * * GET /api/health → dashboard (rich human-readable, runs all checks) * GET /api/health/ready → readiness (compact machine-readable, 200 or 503) * * Author: Kenneth Obsequio (@lash0000) * Date Created: Jun. 20, 2026 ***********************************************************************************************************************************************************************/ "use strict"; const { runDashboard, runReadiness } = require('../services/health.service'); // ─── GET /api/health ───────────────────────────────────────────────────────── // // Human-readable dashboard — runs all checks and returns full context: // app metadata, system info, and per-service connection details. // // Used by: developers, monitoring dashboards, manual inspection. exports.dashboard = async (_req, res) => { const { httpStatus, body } = await runDashboard(); res.status(httpStatus).json(body); }; // ─── GET /api/health/ready ─────────────────────────────────────────────────── // // Machine-readable readiness check — compact response, meaningful HTTP status. // HTTP 200 → healthy or degraded (safe to route traffic) // HTTP 503 → unhealthy (critical dependency down; do not route traffic here) // // Used by: Kubernetes readiness probe, load balancers, deployment gate scripts. exports.readiness = async (_req, res) => { const { httpStatus, body } = await runReadiness(); res.status(httpStatus).json(body); };