43 lines
1.1 KiB
TypeScript
43 lines
1.1 KiB
TypeScript
import { Pool } from "pg";
|
|
|
|
// Configuration de la base de données
|
|
const dbConfig = {
|
|
host: process.env.DB_HOST || "localhost",
|
|
port: parseInt(process.env.DB_PORT || "5432"),
|
|
database: process.env.DB_NAME || "peakskills",
|
|
user: process.env.DB_USER || "peakskills_user",
|
|
password: process.env.DB_PASSWORD || "peakskills_password",
|
|
// ✅ AJOUT : Configuration optimisée du pool
|
|
max: 20, // Connexions max
|
|
min: 2, // Connexions min
|
|
idleTimeoutMillis: 30000, // 30s
|
|
connectionTimeoutMillis: 2000, // 2s
|
|
acquireTimeoutMillis: 10000, // 10s
|
|
// Optimisations supplémentaires
|
|
allowExitOnIdle: true,
|
|
maxUses: 7500, // Recycler les connexions après 7500 utilisations
|
|
};
|
|
|
|
// Pool de connexions global
|
|
let pool: Pool | null = null;
|
|
|
|
export function getPool(): Pool {
|
|
if (!pool) {
|
|
pool = new Pool(dbConfig);
|
|
|
|
pool.on("error", (err) => {
|
|
console.error("Unexpected error on idle client", err);
|
|
process.exit(-1);
|
|
});
|
|
}
|
|
|
|
return pool;
|
|
}
|
|
|
|
export async function closePool(): Promise<void> {
|
|
if (pool) {
|
|
await pool.end();
|
|
pool = null;
|
|
}
|
|
}
|