import { createClient } from "@/lib/supabase-server";
import { NextResponse } from "next/server";
import { getCompanyContext } from "@/lib/company-context";
import {
  alterarProdutoComoOPainel,
  criarProdutoComoOPainel,
  excluirProdutoComoOPainel,
} from "@/lib/produtos/servidor/gravar-produto";

/* A regra da gravação mora em lib/produtos/servidor/gravar-produto.ts, a
   mesma que o assistente (MCP) usa. Aqui só se confere quem chama. */

async function getAuth() {
  const supabase = await createClient();
  const {
    data: { user },
  } = await supabase.auth.getUser();
  return { supabase, user };
}

export async function POST(req: Request) {
  const { supabase, user } = await getAuth();
  if (!user) return NextResponse.json({ error: "Não autenticado." }, { status: 401 });
  const body = await req.json().catch(() => null);
  return criarProdutoComoOPainel({ supabase, user, obterContexto: () => getCompanyContext(supabase, user), body, req });
}

export async function PATCH(req: Request) {
  const { supabase, user } = await getAuth();
  if (!user) return NextResponse.json({ error: "Nao autenticado." }, { status: 401 });
  const body = await req.json().catch(() => null);
  return alterarProdutoComoOPainel({ supabase, user, obterContexto: () => getCompanyContext(supabase, user), body, req });
}

export async function DELETE(req: Request) {
  const { supabase, user } = await getAuth();
  if (!user) return NextResponse.json({ error: "Não autenticado." }, { status: 401 });
  const body = await req.json().catch(() => null);
  return excluirProdutoComoOPainel({ supabase, user, obterContexto: () => getCompanyContext(supabase, user), body, req });
}
