Careeroza
PrismaService
Wrap PrismaClient in a Provider
src/prisma/prisma.service.ts
import { Injectable, OnModuleDestroy, OnModuleInit } from '@nestjs/common';
import { PrismaClient } from '@prisma/client';
@Injectable()
export class PrismaService extends PrismaClient implements OnModuleInit, OnModuleDestroy {
async onModuleInit() {
await this.$connect(); // fail fast if the database is down
}
async onModuleDestroy() {
await this.$disconnect();
}
}src/prisma/prisma.module.ts
import { Global, Module } from '@nestjs/common';
import { PrismaService } from './prisma.service';
@Global()
@Module({
providers: [PrismaService],
exports: [PrismaService],
})
export class PrismaModule {}Note: Import PrismaModule once in AppModule. Because it is global, every service can inject PrismaService, and there is only one connection pool.