'use server' import { revalidatePath } from 'next/cache' import { z } from 'zod' import { prisma } from '@/lib/prisma' import { requireAdmin } from '@/lib/auth-guard' const cuidSchema = z.string().cuid() export async function cancelJobAction(jobId: string) { await requireAdmin() const parsed = cuidSchema.safeParse(jobId) if (!parsed.success) throw new Error('Ongeldig job-id') const job = await prisma.claudeJob.findUnique({ where: { id: parsed.data }, select: { status: true }, }) if (!job) throw new Error('Job niet gevonden') if (job.status === 'DONE' || job.status === 'FAILED' || job.status === 'CANCELLED') { throw new Error('Job is al in eindstatus') } await prisma.claudeJob.update({ where: { id: parsed.data }, data: { status: 'CANCELLED', finished_at: new Date() }, }) revalidatePath('/admin/jobs') } export async function deleteJobAction(jobId: string) { await requireAdmin() const parsed = cuidSchema.safeParse(jobId) if (!parsed.success) throw new Error('Ongeldig job-id') await prisma.claudeJob.delete({ where: { id: parsed.data } }) revalidatePath('/admin/jobs') }