import { NextResponse, unstable_rootParams } from 'next/server';

export const runtime = 'edge';

export async function PATCH(request: Request) {
  const { id } = await unstable_rootParams();
  console.log('🔄 [API] Atualizando endereço:', id);

  try {
    const body = await request.json();
    console.log('📤 [API] Dados para atualização:', body);

    const response = await fetch(
      `${process.env.NEXT_PUBLIC_APPWRITE_ENDPOINT!}/databases/${process.env.NEXT_PUBLIC_APPWRITE_DATABASE_ID!}/collections/${process.env.NEXT_PUBLIC_APPWRITE_COLLECTION_ENDERECOS_ID!}/documents/${id}`,
      {
        method: 'PATCH',
        headers: {
          'Content-Type': 'application/json',
          'X-Appwrite-Project': process.env.NEXT_PUBLIC_APPWRITE_PROJECT_ID!,
          'X-Appwrite-Key': process.env.APPWRITE_API_KEY!
        },
        body: JSON.stringify(body)
      }
    );

    if (response.ok) {
      const data = await response.json();
      console.log('✅ [API] Endereço atualizado com sucesso!');
      return NextResponse.json({ success: true, data });
    } else {
      const errorData = await response.json().catch(() => ({}));
      console.error('❌ [API] Erro ao atualizar:', response.status, errorData);
      return NextResponse.json(
        { success: false, error: 'Erro ao atualizar endereço', details: errorData },
        { status: response.status }
      );
    }
  } catch (error) {
    console.error('💥 [API] Erro na atualização:', error);
    return NextResponse.json(
      { success: false, error: 'Erro interno do servidor' },
      { status: 500 }
    );
  }
}

export async function DELETE() {
  const { id } = await unstable_rootParams();
  console.log('🗑️ [API] Excluindo endereço:', id);

  try {
    const response = await fetch(
      `${process.env.NEXT_PUBLIC_APPWRITE_ENDPOINT!}/databases/${process.env.NEXT_PUBLIC_APPWRITE_DATABASE_ID!}/collections/${process.env.NEXT_PUBLIC_APPWRITE_COLLECTION_ENDERECOS_ID!}/documents/${id}`,
      {
        method: 'DELETE',
        headers: {
          'Content-Type': 'application/json',
          'X-Appwrite-Project': process.env.NEXT_PUBLIC_APPWRITE_PROJECT_ID!,
          'X-Appwrite-Key': process.env.APPWRITE_API_KEY!
        }
      }
    );

    if (response.ok || response.status === 204) {
      console.log('✅ [API] Endereço excluído com sucesso!');
      return NextResponse.json({ success: true });
    } else {
      const errorData = await response.json().catch(() => ({}));
      console.error('❌ [API] Erro ao excluir:', response.status, errorData);
      return NextResponse.json(
        { success: false, error: 'Erro ao excluir endereço', details: errorData },
        { status: response.status }
      );
    }
  } catch (error) {
    console.error('💥 [API] Erro na exclusão:', error);
    return NextResponse.json(
      { success: false, error: 'Erro interno do servidor' },
      { status: 500 }
    );
  }
}
