feat: establish backend foundation
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user