39 lines
954 B
JavaScript
39 lines
954 B
JavaScript
const { Pool } = require('pg');
|
|
const path = require('path');
|
|
require('dotenv').config({ path: path.resolve(__dirname, '../../..', '.env') });
|
|
|
|
// Database configuration
|
|
const dbConfig = {
|
|
host: process.env.DB_HOST,
|
|
user: process.env.DB_USER,
|
|
password: process.env.DB_PASSWORD,
|
|
database: process.env.DB_NAME,
|
|
port: process.env.DB_PORT || 5432,
|
|
ssl: process.env.DB_SSL === 'true',
|
|
// Add performance optimizations
|
|
max: 10, // connection pool max size
|
|
idleTimeoutMillis: 30000,
|
|
connectionTimeoutMillis: 60000
|
|
};
|
|
|
|
// Create a single pool instance to be reused
|
|
const pool = new Pool(dbConfig);
|
|
|
|
// Add event handlers for pool
|
|
pool.on('error', (err, client) => {
|
|
console.error('Unexpected error on idle client', err);
|
|
});
|
|
|
|
async function getConnection() {
|
|
return await pool.connect();
|
|
}
|
|
|
|
async function closePool() {
|
|
await pool.end();
|
|
}
|
|
|
|
module.exports = {
|
|
dbConfig,
|
|
getConnection,
|
|
closePool
|
|
};
|