/** * WorthDoing.ai * Author: Simon-Pierre Boucher * Contact: contact@spboucher.ai * File: src/lib/db/client.ts * Description: Singleton Drizzle + postgres.js client (survives Next.js dev hot reloads). */ import { drizzle } from "drizzle-orm/postgres-js"; import postgres from "postgres"; import { env } from "@/lib/env"; import * as schema from "./schema"; const globalForDb = globalThis as unknown as { __wdSql?: ReturnType; }; const sql = globalForDb.__wdSql ?? postgres(env().DATABASE_URL, { max: 10, idle_timeout: 30, onnotice: () => {}, }); if (env().NODE_ENV !== "production") globalForDb.__wdSql = sql; export const db = drizzle(sql, { schema }); export type Db = typeof db;