Files
myeasycms-v2/apps/web/app/api/healthcheck/route.ts
Giancarlo Buomprisco 4bc8448a1d Unify workspace dropdowns; Update layouts (#458)
Unified Account and Workspace drop-downs; Layout updates, now header lives within the PageBody component; Sidebars now use floating variant
2026-03-11 14:45:42 +08:00

39 lines
1.1 KiB
TypeScript

import { NextResponse } from 'next/server';
import { getSupabaseServerAdminClient } from '@kit/supabase/server-admin-client';
/**
* Healthcheck endpoint for the web app. If this endpoint returns a 200, the web app will be considered healthy.
* If this endpoint returns a 500, the web app will be considered unhealthy.
* This endpoint can be used by Docker to determine if the web app is healthy and should be restarted.
*/
export async function GET() {
const isDbHealthy = await getSupabaseHealthCheck();
return NextResponse.json({
services: {
database: isDbHealthy,
// add other services here
},
});
}
/**
* Quick check to see if the database is healthy by querying the config table
* @returns true if the database is healthy, false otherwise
*/
async function getSupabaseHealthCheck() {
try {
const client = getSupabaseServerAdminClient();
const { data, error } = await client
.from('config')
.select('billing_provider')
.single();
return !error && Boolean(data?.billing_provider);
} catch {
return false;
}
}