Files
portal/src/lib/db.ts
T
2026-02-25 13:19:26 -06:00

34 lines
791 B
TypeScript

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<string | symbol, unknown>)[prop];
}
});