import { NextRequest, NextResponse } from "next/server";
import { databases } from "@/lib/appwrite";

// Runtime edge para melhor performance
export const runtime = "edge";

const DATABASE_ID = process.env.NEXT_PUBLIC_APPWRITE_DATABASE_ID!;
const COLLECTION_CATALOGO =
  process.env.NEXT_PUBLIC_APPWRITE_COLLECTION_CATALOGO_PRODUTOS_ID!;

export async function POST(request: NextRequest) {
  try {
    const { produtoId, categoriaId, subcategoriaId } = await request.json();

    console.log("🔗 [API] Relacionando produto com categoria:", {
      produtoId,
      categoriaId,
      subcategoriaId,
    });

    if (!produtoId?.trim()) {
      return NextResponse.json(
        {
          sucesso: false,
          erro: "ID do produto é obrigatório",
        },
        { status: 400 }
      );
    }

    // Preparar dados para atualização
    const updateData: any = {};

    if (categoriaId?.trim()) {
      updateData.categoria = categoriaId.trim();
    }

    if (subcategoriaId?.trim()) {
      updateData.subcategoria = subcategoriaId.trim();
    }

    if (Object.keys(updateData).length === 0) {
      return NextResponse.json(
        {
          sucesso: false,
          erro: "Pelo menos uma categoria ou subcategoria deve ser fornecida",
        },
        { status: 400 }
      );
    }

    // Atualizar produto no catálogo
    const produtoAtualizado = await databases.updateDocument(
      DATABASE_ID,
      COLLECTION_CATALOGO,
      produtoId,
      updateData
    );

    console.log(
      "✅ [API] Produto relacionado com sucesso:",
      produtoAtualizado.$id
    );

    return NextResponse.json({
      sucesso: true,
      produto: produtoAtualizado,
      mensagem: "Produto relacionado com categoria/subcategoria com sucesso!",
    });
  } catch (error) {
    console.error("❌ [API] Erro ao relacionar produto:", error);

    return NextResponse.json(
      {
        sucesso: false,
        erro: error instanceof Error ? error.message : "Erro desconhecido",
        mensagem: "Erro ao relacionar produto com categoria",
      },
      { status: 500 }
    );
  }
}
