41 lines
1.1 KiB
JavaScript
41 lines
1.1 KiB
JavaScript
const { Sequelize } = require('sequelize');
|
|
require('dotenv').config();
|
|
|
|
const sequelize = new Sequelize(
|
|
process.env.MYSQL_DATABASE,
|
|
process.env.MYSQL_USER,
|
|
process.env.MYSQL_PASSWORD,
|
|
{
|
|
host: process.env.DB_HOST,
|
|
dialect: 'mysql',
|
|
logging: false,
|
|
pool: {
|
|
max: 5,
|
|
min: 0,
|
|
acquire: 30000,
|
|
idle: 10000
|
|
}
|
|
}
|
|
);
|
|
|
|
// Test Connection
|
|
const connectDB = async () => {
|
|
let retries = 20; // Increased retries for slow DB startup
|
|
while (retries > 0) {
|
|
try {
|
|
console.log(`[Database] Attempting to connect... (Retries left: ${retries})`);
|
|
await sequelize.authenticate();
|
|
console.log('[Database] Connection has been established successfully.');
|
|
return;
|
|
} catch (error) {
|
|
console.error(`[Database] Unable to connect. Retrying in 5s...`, error.message);
|
|
retries -= 1;
|
|
await new Promise(res => setTimeout(res, 5000)); // Wait 5 seconds
|
|
}
|
|
}
|
|
console.error('[Database] Failed to connect after multiple attempts.');
|
|
process.exit(1);
|
|
};
|
|
|
|
module.exports = { sequelize, connectDB };
|