const { Sequelize } = require('sequelize'); const dotenv = require('dotenv'); dotenv.config(); // Create Sequelize instance let sequelize; if (process.env.DATABASE_URL) { // Use connection string if available sequelize = new Sequelize(process.env.DATABASE_URL, { logging: process.env.NODE_ENV === 'development' ? console.log : false, define: { freezeTableName: true // Prevent Sequelize from pluralizing table names }, dialectOptions: { ssl: { require: true, rejectUnauthorized: false } }, pool: { max: 5, min: 0, acquire: 30000, idle: 10000 } }); } else { // Fall back to individual parameters sequelize = new Sequelize( process.env.DB_NAME || 'postgres', process.env.DB_USER || 'postgres', process.env.DB_PASSWORD || 'postgres', { host: process.env.DB_HOST || 'localhost', port: process.env.DB_PORT || 5432, dialect: 'postgres', logging: process.env.NODE_ENV === 'development' ? console.log : false, define: { freezeTableName: true // Prevent Sequelize from pluralizing table names }, dialectOptions: { ssl: process.env.NODE_ENV === 'production' ? { require: true, rejectUnauthorized: false } : false }, pool: { max: 5, min: 0, acquire: 30000, idle: 10000 } } ); } // Test the connection const connectDB = async () => { try { await sequelize.authenticate(); console.log('Database connection established successfully.'); } catch (error) { console.error('Unable to connect to the database:', error); process.exit(1); } }; module.exports = { sequelize, connectDB };