48 lines
1000 B
JavaScript
48 lines
1000 B
JavaScript
// config/connector.js
|
|
const mysql = require("mysql2/promise");
|
|
|
|
let pool = null;
|
|
|
|
async function initDB() {
|
|
if (pool) return pool;
|
|
|
|
pool = mysql.createPool({
|
|
host: process.env.DB_HOST,
|
|
port: process.env.DB_PORT,
|
|
user: process.env.DB_USER,
|
|
password: process.env.DB_PASS,
|
|
database: process.env.DB_NAME,
|
|
|
|
waitForConnections: true,
|
|
connectionLimit: 10,
|
|
queueLimit: 0,
|
|
timezone: "Z", // UTC (bom pra sistemas distribuídos)
|
|
});
|
|
|
|
// Teste de conexão imediato
|
|
try {
|
|
const conn = await pool.getConnection();
|
|
await conn.ping();
|
|
conn.release();
|
|
console.log("✅ MySQL conectado com sucesso");
|
|
} catch (err) {
|
|
console.error("❌ Erro ao conectar no MySQL:", err.message);
|
|
process.exit(1); // mata a API se o banco não subir
|
|
}
|
|
|
|
return pool;
|
|
}
|
|
|
|
async function query(sql, params = []) {
|
|
if (!pool) {
|
|
await initDB();
|
|
}
|
|
|
|
const [rows] = await pool.execute(sql, params);
|
|
return rows;
|
|
}
|
|
|
|
module.exports = {
|
|
initDB,
|
|
query,
|
|
}; |