import { NextResponse } from "next/server";
import { z } from "zod";
import { prisma } from "@/lib/prisma";
import { requireAdmin, unauthorized } from "@/lib/admin-api";

const schema = z.object({
  title: z.string().min(1).optional(),
  description: z.string().optional(),
  imageUrl: z.string().optional(),
  sortOrder: z.number().int().optional(),
});

export async function PATCH(req: Request, { params }: { params: Promise<{ id: string }> }) {
  const admin = await requireAdmin();
  if (!admin) return unauthorized();
  const { id } = await params;
  const body = schema.parse(await req.json());
  const item = await prisma.baseCompetition.update({
    where: { id },
    data: {
      title: body.title,
      description: body.description === undefined ? undefined : body.description.trim() || null,
      imageUrl: body.imageUrl === undefined ? undefined : body.imageUrl.trim() || null,
      sortOrder: body.sortOrder,
    },
  });
  return NextResponse.json(item);
}

export async function DELETE(_: Request, { params }: { params: Promise<{ id: string }> }) {
  const admin = await requireAdmin();
  if (!admin) return unauthorized();
  const { id } = await params;
  await prisma.baseCompetition.delete({ where: { id } });
  return NextResponse.json({ ok: true });
}

