import { type PostgresJsDatabase, drizzle } from "drizzle-orm/postgres-js"; import postgres from "postgres"; declare global { // global use requires var // biome-ignore lint/suspicious/noExplicitAny: TBD var drizzleDbClient: PostgresJsDatabase | undefined; } export interface DatabaseOptions { nodeEnv: string; databaseUrl: string; schema: T; } // Function to connect to database export function connectToDatabase>( options: DatabaseOptions, ): PostgresJsDatabase { const { nodeEnv, databaseUrl, schema } = options; if (nodeEnv === "production") { // Directly create a new instance if in production const client = postgres(databaseUrl); return drizzle(client, { schema }); } // Use global variable to store client if in development if (!globalThis.drizzleDbClient) { const client = postgres(databaseUrl); globalThis.drizzleDbClient = drizzle(client, { schema }); } return globalThis.drizzleDbClient as PostgresJsDatabase; }