Files
electric-cherry/src/routes/api/maintenance/[id]/+server.ts
T
2026-10-09 16:52:37 -04:00

24 lines
1.1 KiB
TypeScript

import { jsonBody } from '$lib/server/request-body.js';
import { isHttpError, json } from '@sveltejs/kit';
import { watchdogDetail, updateWatchdogIncident } from '$lib/server/maintenance/recovery.js';
import { kick } from '$lib/server/pipeline/worker.js';
export function GET({ params }: { params: { id: string } }) {
const detail = watchdogDetail(params.id);
return detail
? json(detail)
: json({ error: 'Maintenance finding not found.' }, { status: 404 });
}
export async function POST({ params, request }: { params: { id: string }; request: Request }) {
const body = await jsonBody(request).catch((cause) => {
if (isHttpError(cause, 413)) throw cause;
return null;
});
if (!body || !['retry', 'dismiss'].includes(body.action))
return json({ error: 'Choose retry or dismiss.' }, { status: 400 });
const result = updateWatchdogIncident(params.id, body.action);
if (!result.ok) return json({ error: result.error }, { status: result.status });
void kick().catch((err) => console.error('[maintenance] worker kick failed:', err));
return json(watchdogDetail(params.id));
}