From 2f26053a8db94e73b3d9cb84ad9064529bbe92fd Mon Sep 17 00:00:00 2001 From: Sidney Date: Sun, 7 Jun 2026 21:18:07 -0300 Subject: [PATCH] fix: db connection string parse override and add debug to main app --- admin/src/lib/db.ts | 29 ++++++++++++++++------------- src/app/api/auth/login/route.ts | 2 +- src/app/login/page.tsx | 2 +- src/lib/db.ts | 29 ++++++++++++++++------------- 4 files changed, 34 insertions(+), 28 deletions(-) diff --git a/admin/src/lib/db.ts b/admin/src/lib/db.ts index 60f2aa7..ced880e 100644 --- a/admin/src/lib/db.ts +++ b/admin/src/lib/db.ts @@ -2,22 +2,25 @@ import { Pool } from 'pg'; const connectionString = process.env.DATABASE_URL || 'postgresql://agendapro:agendapro123@localhost:5432/agendapro'; -// Extract password from connectionString manually just to check, or provide a fallback -let fallbackPassword = process.env.DB_PASSWORD || process.env.POSTGRES_PASSWORD || ''; -try { - const url = new URL(connectionString); - if (!url.password) { - fallbackPassword = process.env.DB_PASSWORD || process.env.POSTGRES_PASSWORD || 'agendapro123'; - } -} catch (e) {} - -const pool = new Pool({ - connectionString, - password: fallbackPassword, +let dbConfig: any = { max: 20, idleTimeoutMillis: 30000, connectionTimeoutMillis: 2000, -}); +}; + +try { + const url = new URL(connectionString); + dbConfig.host = url.hostname; + dbConfig.port = parseInt(url.port) || 5432; + dbConfig.user = url.username || 'postgres'; + dbConfig.password = url.password || process.env.DB_PASSWORD || process.env.POSTGRES_PASSWORD || 'agendapro123'; + dbConfig.database = url.pathname.replace('/', '') || 'agendapro'; +} catch (e) { + // Se não for uma URL válida, usa a string diretamente + dbConfig.connectionString = connectionString; +} + +const pool = new Pool(dbConfig); pool.on('error', (err) => { console.error('Unexpected error on idle client', err); diff --git a/src/app/api/auth/login/route.ts b/src/app/api/auth/login/route.ts index 20ab64f..d717057 100644 --- a/src/app/api/auth/login/route.ts +++ b/src/app/api/auth/login/route.ts @@ -44,6 +44,6 @@ export async function POST(req: Request) { } catch (error: any) { console.error('Login error:', error); - return NextResponse.json({ error: 'Erro interno do servidor' }, { status: 500 }); + return NextResponse.json({ error: 'Erro interno do servidor', details: error.message }, { status: 500 }); } } diff --git a/src/app/login/page.tsx b/src/app/login/page.tsx index d8f7b11..db65efb 100644 --- a/src/app/login/page.tsx +++ b/src/app/login/page.tsx @@ -25,7 +25,7 @@ export default function LoginPage() { const data = await res.json(); if (!res.ok) { - setError(data.error || 'Erro ao realizar login'); + setError(data.error + (data.details ? ` (${data.details})` : '') || 'Erro ao realizar login'); setLoading(false); return; } diff --git a/src/lib/db.ts b/src/lib/db.ts index 60f2aa7..ced880e 100644 --- a/src/lib/db.ts +++ b/src/lib/db.ts @@ -2,22 +2,25 @@ import { Pool } from 'pg'; const connectionString = process.env.DATABASE_URL || 'postgresql://agendapro:agendapro123@localhost:5432/agendapro'; -// Extract password from connectionString manually just to check, or provide a fallback -let fallbackPassword = process.env.DB_PASSWORD || process.env.POSTGRES_PASSWORD || ''; -try { - const url = new URL(connectionString); - if (!url.password) { - fallbackPassword = process.env.DB_PASSWORD || process.env.POSTGRES_PASSWORD || 'agendapro123'; - } -} catch (e) {} - -const pool = new Pool({ - connectionString, - password: fallbackPassword, +let dbConfig: any = { max: 20, idleTimeoutMillis: 30000, connectionTimeoutMillis: 2000, -}); +}; + +try { + const url = new URL(connectionString); + dbConfig.host = url.hostname; + dbConfig.port = parseInt(url.port) || 5432; + dbConfig.user = url.username || 'postgres'; + dbConfig.password = url.password || process.env.DB_PASSWORD || process.env.POSTGRES_PASSWORD || 'agendapro123'; + dbConfig.database = url.pathname.replace('/', '') || 'agendapro'; +} catch (e) { + // Se não for uma URL válida, usa a string diretamente + dbConfig.connectionString = connectionString; +} + +const pool = new Pool(dbConfig); pool.on('error', (err) => { console.error('Unexpected error on idle client', err);