filename:
html/api/services/health/ping.php
branch:
main
back to repo
<?php
// basic health checks: routing, db, auth
$result = [
'routing' => ['status' => 'ok'],
];
// db check
$dbCheck = ['status' => 'unknown'];
try {
require_once __DIR__ . '/../../lib/db.php';
// simple query to verify connection
$pdo->query('SELECT 1');
$dbCheck['status'] = 'ok';
} catch (Throwable $e) {
$dbCheck['status'] = 'error';
$dbCheck['error'] = $e->getMessage();
}
$result['db'] = $dbCheck;
// auth check: verify api_keys table is present and has at least one non-revoked key
$authCheck = ['status' => 'unknown'];
if (isset($pdo) && $dbCheck['status'] === 'ok') {
try {
$q = $pdo->query('SELECT 1 FROM api_keys WHERE revoked=0 LIMIT 1');
if ($q && $q->fetch()) {
$authCheck['status'] = 'ok';
} else {
$authCheck['status'] = 'warn';
$authCheck['details'] = 'no active api_keys found';
}
} catch (Throwable $e) {
$authCheck['status'] = 'error';
$authCheck['error'] = $e->getMessage();
}
} else {
$authCheck['status'] = 'error';
$authCheck['error'] = 'no db connection';
}
$result['auth'] = $authCheck;
// overall status
$overall = 'ok';
foreach ([$dbCheck, $authCheck] as $c) {
if (($c['status'] ?? '') === 'error') { $overall = 'fail'; break; }
if (($c['status'] ?? '') === 'warn') { $overall = 'degraded'; }
}
$result['status'] = $overall;
json($result);