import { Prisma, PrismaClient } from '@prisma/client'; export interface PostgresConfig { url: string; log?: Prisma.PrismaClientOptions['log']; } export interface PostgresConnector { readonly prisma: PrismaClient; connect(): Promise; disconnect(): Promise; } export const resolvePostgresConfigFromEnv = ( env: NodeJS.ProcessEnv = process.env ): PostgresConfig => { const url = env.DATABASE_URL ?? ''; if (!url) { throw new Error('DATABASE_URL is required to create a Postgres client.'); } return { url }; }; export const createPostgresConnector = ( config: PostgresConfig ): PostgresConnector => { const prisma = new PrismaClient({ datasources: { db: { url: config.url, }, }, log: config.log, }); return { prisma, connect: () => prisma.$connect(), disconnect: () => prisma.$disconnect(), }; };