39 lines
1019 B
TypeScript
39 lines
1019 B
TypeScript
import { NextResponse } from "next/server";
|
|
|
|
import { env } from "@/lib/env";
|
|
import { runHealthCheckTick } from "@/lib/plesk/health";
|
|
import { createSupabaseAdminClient } from "@/lib/supabase/admin";
|
|
|
|
export async function POST(req: Request) {
|
|
const startedAt = Date.now();
|
|
|
|
try {
|
|
const secret = req.headers.get("x-cron-secret");
|
|
if (!env.cronSecret || !secret || secret !== env.cronSecret) {
|
|
return NextResponse.json({ error: "Unauthorized" }, { status: 401 });
|
|
}
|
|
|
|
const supabase = createSupabaseAdminClient() as any;
|
|
const summary = await runHealthCheckTick(supabase);
|
|
|
|
return NextResponse.json({
|
|
...summary,
|
|
duration_ms: Date.now() - startedAt,
|
|
});
|
|
} catch (error) {
|
|
console.error("[health cron] failed", error);
|
|
|
|
return NextResponse.json(
|
|
{
|
|
error: "Health check job failed",
|
|
checked: 0,
|
|
ok: 0,
|
|
degraded: 0,
|
|
failed: 0,
|
|
duration_ms: Date.now() - startedAt,
|
|
},
|
|
{ status: 500 },
|
|
);
|
|
}
|
|
}
|