mirror of
https://github.com/Dokploy/dokploy.git
synced 2026-06-20 14:45:42 +02:00
39 lines
937 B
TypeScript
39 lines
937 B
TypeScript
import { dbUrl } from "@dokploy/server/db/constants";
|
|
import * as schema from "@dokploy/server/db/schema";
|
|
import { and, eq } from "drizzle-orm";
|
|
import { drizzle, type PostgresJsDatabase } from "drizzle-orm/postgres-js";
|
|
import postgres from "postgres";
|
|
|
|
export { and, eq };
|
|
|
|
type Database = PostgresJsDatabase<typeof schema>;
|
|
/**
|
|
* 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 {
|
|
// En desarrollo reutilizamos conexión para evitar múltiples conexiones
|
|
if (!globalForDb.db) {
|
|
globalForDb.db = drizzle(postgres(dbUrl), {
|
|
schema,
|
|
});
|
|
}
|
|
|
|
dbConnection = globalForDb.db;
|
|
}
|
|
|
|
export const db: Database = dbConnection;
|
|
|
|
export { dbUrl };
|