Spaces:
Runtime error
Runtime error
| import { NextRequest, NextResponse } from 'next/server' | |
| import { requireRole } from '@/lib/auth' | |
| import { getSchedulerStatus, triggerTask } from '@/lib/scheduler' | |
| /** | |
| * GET /api/scheduler - Get scheduler status | |
| */ | |
| export async function GET(request: NextRequest) { | |
| const auth = requireRole(request, 'admin') | |
| if ('error' in auth) return NextResponse.json({ error: auth.error }, { status: auth.status }) | |
| return NextResponse.json({ tasks: getSchedulerStatus() }) | |
| } | |
| /** | |
| * POST /api/scheduler - Manually trigger a scheduled task | |
| * Body: { task_id: 'auto_backup' | 'auto_cleanup' | 'agent_heartbeat' } | |
| */ | |
| export async function POST(request: NextRequest) { | |
| const auth = requireRole(request, 'admin') | |
| if ('error' in auth) return NextResponse.json({ error: auth.error }, { status: auth.status }) | |
| const body = await request.json().catch(() => ({})) | |
| const taskId = typeof body?.task_id === 'string' ? body.task_id : '' | |
| const allowedTaskIds = new Set(getSchedulerStatus().map((task) => task.id)) | |
| if (!taskId || !allowedTaskIds.has(taskId)) { | |
| return NextResponse.json({ | |
| error: `task_id required: ${Array.from(allowedTaskIds).join(', ')}`, | |
| }, { status: 400 }) | |
| } | |
| const result = await triggerTask(taskId) | |
| return NextResponse.json(result, { status: result.ok ? 200 : 500 }) | |
| } | |