Files
TeleUploader/src/interfaces/http/controllers/health-controller.ts
T
asepharyana 0782d0f993 feat(health): expose app version in /health response
Reads application version from package.json via env.ts readPackageVersion()
and returns it alongside status so deploy verification is instant:
curl https://upload.asepharyana.my.id/health -> {status: ok, version: X.Y.Z}
2026-09-06 00:42:39 +07:00

27 lines
1.1 KiB
TypeScript

import { sql } from 'drizzle-orm';
import { config } from '../../../env';
import { db } from '../../../infrastructure/persistence/drizzle/index';
import logger from '../../../shared/logger/index';
import { getErrorMessage } from '../../../shared/utils/file';
/**
* Handles the health-check endpoint.
*
* Verifies database connectivity by executing a simple `SELECT 1` query.
* Returns a 200 response with `{ status: 'ok' }` when the database is
* reachable, or a 500 response with the error details when it is not.
*
* @param _req - The incoming HTTP request (unused).
* @returns A JSON response indicating the database health status.
*/
export const handleHealth = async (_req: Request): Promise<Response> => {
try {
await db.execute(sql`SELECT 1`);
return Response.json({ status: 'ok', version: config.appVersion }, { status: 200 });
} catch (error: unknown) {
const message = getErrorMessage(error);
logger.error('Health check failed', { error: message });
return Response.json({ status: 'error', error: message }, { status: 500 });
}
};