BlogEditor/backend/config/database.js

41 lines
1.1 KiB
JavaScript

import pkg from 'pg'
import dotenv from 'dotenv'
dotenv.config()
const { Pool } = pkg
// Support both connection string (Supabase) and individual parameters
let poolConfig
if (process.env.DATABASE_URL) {
// Use connection string (Supabase format)
poolConfig = {
connectionString: process.env.DATABASE_URL,
ssl: {
rejectUnauthorized: false // Supabase requires SSL
},
// Connection pool settings for Supabase
max: 20, // Maximum number of clients in the pool
idleTimeoutMillis: 30000,
connectionTimeoutMillis: 2000,
}
} else {
// Use individual parameters (local development)
poolConfig = {
host: process.env.DB_HOST || 'localhost',
port: process.env.DB_PORT || 5432,
database: process.env.DB_NAME || 'blog_editor',
user: process.env.DB_USER || 'postgres',
password: process.env.DB_PASSWORD,
ssl: process.env.NODE_ENV === 'production' ? { rejectUnauthorized: false } : false,
}
}
export const pool = new Pool(poolConfig)
pool.on('error', (err) => {
console.error('Unexpected error on idle client', err)
process.exit(-1)
})