27 lines
861 B
TypeScript
27 lines
861 B
TypeScript
import { drizzle } from "drizzle-orm/node-postgres";
|
|
import pg from "pg";
|
|
import * as schema from "@shared/schema";
|
|
|
|
if (!process.env.DATABASE_URL) {
|
|
throw new Error(
|
|
"DATABASE_URL must be set. Did you forget to provision a database?",
|
|
);
|
|
}
|
|
|
|
// CORREÇÃO: Usar Pool em vez de Client único para melhor performance
|
|
// e evitar queries travadas quando conexão falha
|
|
const pool = new pg.Pool({
|
|
connectionString: process.env.DATABASE_URL,
|
|
max: 20, // máximo de conexões no pool
|
|
idleTimeoutMillis: 30000, // tempo máximo de inatividade
|
|
connectionTimeoutMillis: 5000, // timeout de conexão: 5s
|
|
statement_timeout: 10000, // timeout de query: 10s
|
|
});
|
|
|
|
// Log de erros do pool
|
|
pool.on('error', (err) => {
|
|
console.error('[DB Pool] Erro inesperado:', err.message);
|
|
});
|
|
|
|
export const db = drizzle({ client: pool, schema });
|