ZoeBuyCourses/api/config/connector.js

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,
};