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

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

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

  const items = await findMany(resource);
  return NextResponse.json(items);
}

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

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

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