#!/bin/sh # REMOVIDO set -e para o script não morrer antes de nos mostrar o erro echo "🔎 --- SUPER DIAGNÓSTICO DE CONEXÃO (v3) ---" # Extrai os dados da URL usando Node export DB_HOST=$(node -e "try { const u = new URL(process.env.DATABASE_URL); console.log(u.hostname); } catch(e) { console.log('error'); }") export DB_PORT=$(node -e "try { const u = new URL(process.env.DATABASE_URL); console.log(u.port || '5432'); } catch(e) { console.log('5432'); }") echo "📡 Host: $DB_HOST | Porta: $DB_PORT" # Função de espera com exibição de erro real wait_for_db() { echo "⏳ Validando login no banco..." max_retries=10 count=0 while [ $count -lt $max_retries ]; do count=$((count + 1)) echo "🔄 Tentativa $count/$max_retries..." # Roda o Prisma e captura TUDO o que ele disser PRISMA_OUTPUT=$(./node_modules/.bin/prisma db push --dry-run 2>&1) EXIT_CODE=$? if [ $EXIT_CODE -eq 0 ]; then echo "✅ SUCESSO: Autenticado com sucesso!" return 0 fi echo "❌ ERRO DETECTADO PELO PRISMA:" echo "----------------------------------------------------------------" echo "$PRISMA_OUTPUT" echo "----------------------------------------------------------------" echo "😴 Aguardando 5s..." sleep 5 done return 1 } if [ -n "$DATABASE_URL" ]; then if wait_for_db; then echo "🔄 Sincronizando tabelas..." ./node_modules/.bin/prisma db push --accept-data-loss ./node_modules/.bin/prisma db seed || echo "⚠️ Seed ja existia." else echo "❌ FALHA CRÍTICA: Não foi possível conectar após várias tentativas." exit 1 fi fi echo "🚀 Iniciando aplicação..." exec node server.js