fix: revelar erro real do Supabase no histórico de campanhas
Erros do Supabase (PostgrestError) não são Error, então o catch caía no fallback genérico "Erro ao listar campanhas salvas" e escondia a causa (tabela ausente, projeto pausado, key inválida). Agora extrai message/code/details/hint. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
8bd7377706
commit
6a97012058
1 changed files with 15 additions and 2 deletions
|
|
@ -1,6 +1,19 @@
|
|||
import { NextRequest, NextResponse } from 'next/server';
|
||||
import { getSupabaseServerClient } from '@/lib/supabase/server';
|
||||
|
||||
// Erros do Supabase (PostgrestError) não são instâncias de Error — têm
|
||||
// message/code/details/hint. Sem isso, o catch caía no fallback genérico e
|
||||
// escondia a causa real (tabela ausente, projeto pausado, key inválida...).
|
||||
function describeError(error: unknown, fallback: string): string {
|
||||
if (error instanceof Error) return error.message;
|
||||
if (error && typeof error === 'object') {
|
||||
const e = error as { message?: string; code?: string; details?: string; hint?: string };
|
||||
const parts = [e.message, e.code ? `(code ${e.code})` : '', e.details, e.hint].filter(Boolean);
|
||||
if (parts.length) return parts.join(' ');
|
||||
}
|
||||
return fallback;
|
||||
}
|
||||
|
||||
const ALLOWED_FIELDS = [
|
||||
'product',
|
||||
'audience',
|
||||
|
|
@ -66,7 +79,7 @@ export async function POST(request: NextRequest) {
|
|||
} catch (error) {
|
||||
console.error('[Campaigns] Error saving draft:', error);
|
||||
return NextResponse.json(
|
||||
{ success: false, error: error instanceof Error ? error.message : 'Erro ao salvar rascunho da campanha.' },
|
||||
{ success: false, error: describeError(error, 'Erro ao salvar rascunho da campanha.') },
|
||||
{ status: 500 }
|
||||
);
|
||||
}
|
||||
|
|
@ -86,7 +99,7 @@ export async function GET(request: NextRequest) {
|
|||
} catch (error) {
|
||||
console.error('[Campaigns] Error listing drafts:', error);
|
||||
return NextResponse.json(
|
||||
{ success: false, error: error instanceof Error ? error.message : 'Erro ao listar campanhas salvas.' },
|
||||
{ success: false, error: describeError(error, 'Erro ao listar campanhas salvas.') },
|
||||
{ status: 500 }
|
||||
);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue