- Add output: 'standalone' to next.config.ts for Docker three-stage build
- Change postgres(url) to postgres(url, { max: 5 }) to avoid Neon free tier exhaustion
- Remove dead @vercel/blob dependency (imported nowhere in codebase)
25 lines
702 B
TypeScript
25 lines
702 B
TypeScript
import { drizzle } from "drizzle-orm/postgres-js";
|
|
import postgres from "postgres";
|
|
import * as schema from "./schema";
|
|
|
|
type DrizzleDb = ReturnType<typeof createDb>;
|
|
|
|
function createDb() {
|
|
const url = process.env.DATABASE_URL;
|
|
if (!url) {
|
|
throw new Error("DATABASE_URL environment variable is not set");
|
|
}
|
|
const client = postgres(url, { max: 5 });
|
|
return drizzle({ client, schema });
|
|
}
|
|
|
|
// Lazy singleton — created on first use, not at module load time
|
|
let _db: DrizzleDb | undefined;
|
|
|
|
export const db = new Proxy({} as DrizzleDb, {
|
|
get(_target, prop: string | symbol) {
|
|
if (!_db) _db = createDb();
|
|
return (_db as unknown as Record<string | symbol, unknown>)[prop];
|
|
},
|
|
});
|