32 lines
865 B
TypeScript
32 lines
865 B
TypeScript
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<Environment, true>): string {
|
|
return config.getOrThrow<string>('DATABASE_URL');
|
|
}
|
|
|
|
@Injectable()
|
|
export class PrismaService
|
|
extends PrismaClient
|
|
implements OnModuleInit, OnModuleDestroy
|
|
{
|
|
constructor(config: ConfigService<Environment, true>) {
|
|
super({
|
|
adapter: new PrismaBetterSqlite3({
|
|
url: getDatabaseUrl(config),
|
|
}),
|
|
});
|
|
}
|
|
|
|
onModuleInit(): Promise<void> {
|
|
return this.$connect();
|
|
}
|
|
|
|
onModuleDestroy(): Promise<void> {
|
|
return this.$disconnect();
|
|
}
|
|
}
|