import 'dotenv/config'; import fs from 'fs'; import pg from 'pg'; import { PrismaPg } from '@prisma/adapter-pg'; import { PrismaClient } from '$lib/generated/prisma/client'; let _prisma: PrismaClient | undefined; function getPrisma(): PrismaClient { if (!_prisma) { const ca_cert = process.env.DO_CA_CERTIFICATE ?? ''; const pool = new pg.Pool({ connectionString: process.env.DATABASE_URL, ssl: ca_cert ? { rejectUnauthorized: true, ca: fs.readFileSync(ca_cert).toString() } : undefined }); const adapter = new PrismaPg(pool); _prisma = new PrismaClient({ adapter }); } return _prisma; } export const prisma = new Proxy({} as PrismaClient, { get(_, prop) { return (getPrisma() as unknown as Record)[prop]; } });