53 lines
1.3 KiB
JavaScript
53 lines
1.3 KiB
JavaScript
import pg from 'pg';
|
|
import dotenv from 'dotenv';
|
|
|
|
dotenv.config();
|
|
|
|
const { Pool } = pg;
|
|
|
|
const {
|
|
DB_HOST = 'localhost',
|
|
DB_PORT = '5432',
|
|
DB_USER = 'postgres',
|
|
DB_PASSWORD = 'postgres',
|
|
DB_NAME = 'gohorsejobs',
|
|
DB_SSLMODE = 'disable',
|
|
} = process.env;
|
|
|
|
// Database connection configuration
|
|
export const pool = new Pool({
|
|
host: DB_HOST,
|
|
port: Number(DB_PORT),
|
|
user: DB_USER,
|
|
password: DB_PASSWORD,
|
|
database: DB_NAME,
|
|
ssl: DB_SSLMODE === 'require' ? { rejectUnauthorized: false } : false,
|
|
});
|
|
|
|
// Test database connection
|
|
export async function testConnection() {
|
|
try {
|
|
const client = await pool.connect();
|
|
console.log('✅ Database connected successfully');
|
|
client.release();
|
|
return true;
|
|
} catch (error) {
|
|
console.error('❌ Database connection failed:', error.message);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
// Execute a query
|
|
export async function query(text, params) {
|
|
const start = Date.now();
|
|
const res = await pool.query(text, params);
|
|
const duration = Date.now() - start;
|
|
console.log('Executed query', { text, duration, rows: res.rowCount });
|
|
return res;
|
|
}
|
|
|
|
// Close the pool
|
|
export async function closePool() {
|
|
await pool.end();
|
|
console.log('Database connection pool closed');
|
|
}
|