Files
mini/src/pages/api/god/db-ops.ts
2025-12-14 19:19:14 -05:00

43 lines
1.4 KiB
TypeScript

import type { APIRoute } from 'astro';
import { MECHANIC_OPS } from '@/lib/db/mechanic';
export const POST: APIRoute = async ({ request }) => {
// 1. Security Check (The Token)
const authHeader = request.headers.get('Authorization');
const token = import.meta.env.GOD_MODE_TOKEN || process.env.GOD_MODE_TOKEN;
// Allow either Bearer token or exact match (for flexibility)
if (authHeader !== `Bearer ${token}` && request.headers.get('X-God-Token') !== token) {
return new Response('Unauthorized: You are not God.', { status: 401 });
}
// 2. Parse the Command
const body = await request.json();
const op = body.operation; // 'vacuum', 'reindex', 'kill_locks'
try {
let result = '';
// 3. Execute the Mechanic
switch (op) {
case 'vacuum':
result = await MECHANIC_OPS.maintenance.vacuum();
break;
case 'reindex':
result = await MECHANIC_OPS.maintenance.reindex();
break;
case 'kill_locks':
result = await MECHANIC_OPS.maintenance.kill_locks();
break;
default:
return new Response('Unknown Operation', { status: 400 });
}
// 4. Return Success
return new Response(result, { status: 200 });
} catch (error) {
return new Response(`Error: ${(error as Error).message}`, { status: 500 });
}
};