Files
octto-engenharia/frontend/start.sh

54 lines
1.7 KiB
Bash

#!/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