Files
fasto/backend/db.js
Cauê Faleiros f3b1b160c1
All checks were successful
Build and Deploy / build-and-push (push) Successful in 2m16s
fix: implement db connection retry mechanism
2026-02-24 09:41:32 -03:00

43 lines
1.4 KiB
JavaScript

const mysql = require('mysql2/promise');
// Configuração da conexão com o banco de dados
// Em produção, estes valores devem vir de variáveis de ambiente (.env)
const dbConfig = {
host: process.env.DB_HOST || 'localhost',
user: process.env.DB_USER || 'root',
password: process.env.DB_PASSWORD || 'password',
database: process.env.DB_NAME || 'agenciac_comia',
waitForConnections: true,
connectionLimit: 10,
queueLimit: 0,
};
const pool = mysql.createPool(dbConfig);
// Função para testar a conexão com retry
const connectWithRetry = async (retries = 5, delay = 5000) => {
for (let i = 0; i < retries; i++) {
try {
const connection = await pool.getConnection();
console.log('✅ Conectado ao MySQL com sucesso!');
connection.release();
return; // Conexão bem-sucedida, sair da função
} catch (err) {
console.error(`❌ Erro ao conectar ao MySQL (Tentativa ${i + 1}/${retries}):`, err.message);
if (i < retries - 1) {
console.log(`⏳ Aguardando ${delay / 1000} segundos antes de tentar novamente...`);
await new Promise(res => setTimeout(res, delay));
} else {
console.error('🚨 Falha crítica: Não foi possível conectar ao banco de dados após várias tentativas.');
// Opcional: process.exit(1) se quiser que o container reinicie
}
}
}
};
// Iniciar a tentativa de conexão
connectWithRetry();
module.exports = pool;