import { NextResponse } from "next/server";
import { hasPremium, requireUser } from "@/lib/auth";
import { prisma } from "@/lib/prisma";

export async function GET() {
  const user = await requireUser();
  return NextResponse.json({ ok: true, favorites: await prisma.favoriteTool.findMany({ where: { userId: user.id }, orderBy: { createdAt: "desc" } }) });
}

export async function POST(request: Request) {
  const user = await requireUser();
  if (!hasPremium(user)) return NextResponse.json({ ok: false, error: "Serverseitige Favoriten sind Premium." }, { status: 402 });
  const body = (await request.json()) as { toolSlug?: string };
  const toolSlug = String(body.toolSlug ?? "").trim();
  if (!toolSlug) return NextResponse.json({ ok: false }, { status: 400 });
  await prisma.favoriteTool.upsert({
    where: { userId_toolSlug: { userId: user.id, toolSlug } },
    update: {},
    create: { userId: user.id, toolSlug },
  });
  return NextResponse.json({ ok: true });
}

export async function DELETE(request: Request) {
  const user = await requireUser();
  const toolSlug = new URL(request.url).searchParams.get("toolSlug") ?? "";
  await prisma.favoriteTool.deleteMany({ where: { userId: user.id, toolSlug } });
  return NextResponse.json({ ok: true });
}
