41 lines
1.1 KiB
JavaScript
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)
|
|
})
|