diff --git a/src/lib/db.ts b/src/lib/db.ts index 52cfa29..424ce94 100644 --- a/src/lib/db.ts +++ b/src/lib/db.ts @@ -4,19 +4,30 @@ import pg from 'pg'; import { PrismaPg } from '@prisma/adapter-pg'; import { PrismaClient } from '$lib/generated/prisma/client'; -const ca_cert = process.env.DO_CA_CERTIFICATE ?? ''; +let _prisma: PrismaClient | undefined; -const pool = new pg.Pool({ - connectionString: process.env.DATABASE_URL, - ssl: ca_cert - ? { - rejectUnauthorized: true, - ca: fs.readFileSync(ca_cert).toString() - } - : 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 Record)[prop]; + } }); - -const adapter = new PrismaPg(pool); -const prisma = new PrismaClient({ adapter }); - -export { prisma };