Files
peakskills/services/database.ts
Julien Froidefond 5e1e06be47 perf: homepage
2025-08-25 21:30:35 +02:00

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;
}
}