2025-04-24 12:44:46 -04:00

70 lines
1.7 KiB
JavaScript

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