import { Injectable, OnModuleDestroy, OnModuleInit } from '@nestjs/common' import { PrismaMariaDb } from '@prisma/adapter-mariadb' import 'dotenv/config' import { env } from 'prisma/config' import { PrismaClient } from '../generated/prisma/client' import { getPrismaOptions } from './prisma-config.service' @Injectable() export class PrismaService extends PrismaClient implements OnModuleInit, OnModuleDestroy { constructor() { const adapter = new PrismaMariaDb({ host: env('DATABASE_HOST'), user: env('DATABASE_USER'), password: env('DATABASE_PASSWORD'), database: env('DATABASE_NAME'), port: env('DATABASE_PORT') ? Number(env('DATABASE_PORT')) : 3306, connectionLimit: 10, }) const prismaOptions = getPrismaOptions() super({ ...prismaOptions, adapter }) } async onModuleInit() { await this.$connect() } async onModuleDestroy() { await this.$disconnect() } // async enableShutdownHooks(app: any) { // this.$on('beforeExit', async () => { // await app.close() // }) // } }