24 lines
1.1 KiB
TypeScript
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));
|
|
}
|