import { NextResponse } from "next/server";
import { requireAdmin } from "@/lib/session";
import { isValidResource, updateItem, deleteItem } from "@/lib/admin-crud";

export async function PUT(
  request: Request,
  { params }: { params: Promise<{ resource: string; id: string }> }
) {
  const { error } = await requireAdmin();
  if (error) return error;

  const { resource, id } = await params;
  if (!isValidResource(resource)) {
    return NextResponse.json({ error: "Invalid resource" }, { status: 404 });
  }

  try {
    const body = await request.json();
    const item = await updateItem(resource, id, body);
    return NextResponse.json(item);
  } catch (err) {
    console.error(err);
    return NextResponse.json({ error: "Failed to update" }, { status: 500 });
  }
}

export async function DELETE(
  _request: Request,
  { params }: { params: Promise<{ resource: string; id: string }> }
) {
  const { error } = await requireAdmin();
  if (error) return error;

  const { resource, id } = await params;
  if (!isValidResource(resource)) {
    return NextResponse.json({ error: "Invalid resource" }, { status: 404 });
  }

  try {
    await deleteItem(resource, id);
    return NextResponse.json({ success: true });
  } catch (err) {
    console.error(err);
    return NextResponse.json({ error: "Failed to delete" }, { status: 500 });
  }
}
