refactor: replace global db declaration with a globalForDb object to prevent redeclaration issues in monorepos and improve connection management in development and production environments

This commit is contained in:
Mauricio Siu
2026-02-24 22:48:29 -06:00
parent c22e006e30
commit 2a3ae89f5e

View File

@@ -9,22 +9,30 @@ export * from "./schema";
type Database = PostgresJsDatabase<typeof schema>;
declare global {
var db: Database | undefined;
}
/**
* Evita problemas de redeclaración global en monorepos.
* No usamos `declare global`.
*/
const globalForDb = globalThis as unknown as {
db?: Database;
};
let dbConnection: Database;
if (process.env.NODE_ENV === "production") {
// En producción no usamos global cache
dbConnection = drizzle(postgres(dbUrl), {
schema,
});
} else {
if (!global.db)
global.db = drizzle(postgres(dbUrl), {
// En desarrollo reutilizamos conexión para evitar múltiples conexiones
if (!globalForDb.db) {
globalForDb.db = drizzle(postgres(dbUrl), {
schema,
});
}
dbConnection = global.db;
dbConnection = globalForDb.db;
}
export const db: Database = dbConnection;