import { NextResponse } from "next/server";
import { prisma } from "@/lib/prisma";
import { requireAdmin, unauthorized } from "@/lib/admin-api";
import { slugify } from "@/lib/slug";
import { NewsCategory } from "@prisma/client";

export async function GET() {
  const admin = await requireAdmin();
  if (!admin) return unauthorized();
  const list = await prisma.news.findMany({
    orderBy: { createdAt: "desc" },
  });
  return NextResponse.json(list);
}

export async function POST(req: Request) {
  const admin = await requireAdmin();
  if (!admin) return unauthorized();
  const body = await req.json();
  let slug = body.slug ? slugify(body.slug) : slugify(body.title || "noticia");
  const exists = await prisma.news.findUnique({ where: { slug } });
  if (exists) slug = `${slug}-${Date.now().toString(36)}`;

  const news = await prisma.news.create({
    data: {
      title: body.title,
      slug,
      excerpt: body.excerpt ?? null,
      content: body.content ?? "",
      imageUrl: body.imageUrl ?? null,
      externalUrl: body.externalUrl ?? null,
      category: (body.category as NewsCategory) || "CLUBE",
      published: Boolean(body.published),
    },
  });
  return NextResponse.json(news);
}
