import { Injectable, OnModuleDestroy, OnModuleInit } from '@nestjs/common'; import { ConfigService } from '@nestjs/config'; import { PrismaBetterSqlite3 } from '@prisma/adapter-better-sqlite3'; import { PrismaClient } from '../../generated/prisma/client'; import { Environment } from '../config/env.validation'; function getDatabaseUrl(config: ConfigService): string { return config.getOrThrow('DATABASE_URL'); } @Injectable() export class PrismaService extends PrismaClient implements OnModuleInit, OnModuleDestroy { constructor(config: ConfigService) { super({ adapter: new PrismaBetterSqlite3({ url: getDatabaseUrl(config), }), }); } onModuleInit(): Promise { return this.$connect(); } onModuleDestroy(): Promise { return this.$disconnect(); } }