import { Injectable, type OnModuleDestroy, type OnModuleInit, } from "@nestjs/common"; import { ConfigService } from "@nestjs/config"; import { PrismaPg } from "@prisma/adapter-pg"; import { PrismaClient } from "@prisma/client"; import { Pool } from "pg"; @Injectable() export class PrismaService extends PrismaClient implements OnModuleInit, OnModuleDestroy { constructor(private readonly configService: ConfigService) { const connectionString = configService.getOrThrow("DATABASE_URL"); const pool = new Pool({ connectionString }); const adapter = new PrismaPg(pool); super({ adapter }); } async onModuleInit() { await this["$connect"](); } async onModuleDestroy() { await this["$disconnect"](); } }