Files
davinci-platform/packages/api/src/prisma/prisma.service.ts

34 lines
1.1 KiB
TypeScript
Raw Normal View History

import { Injectable, OnModuleInit, OnModuleDestroy } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
import { PrismaClient } from '../generated/prisma/client';
import { PrismaPg } from '@prisma/adapter-pg';
/**
* NestJS-managed Prisma service for Prisma 7.
*
* Follows the official NestJS + Prisma 7 recipe:
* - Uses `prisma-client` generator with `moduleFormat = "cjs"`
* - Extends PrismaClient directly for full type-safe API access
* - Uses PrismaPg driver adapter with connectionString
*
* Usage in feature modules:
* constructor(private readonly prisma: PrismaService) {}
* await this.prisma.placeholder.findMany();
*/
@Injectable()
export class PrismaService extends PrismaClient implements OnModuleInit, OnModuleDestroy {
constructor(configService: ConfigService) {
const databaseUrl = configService.getOrThrow<string>('DATABASE_URL');
const adapter = new PrismaPg({ connectionString: databaseUrl });
super({ adapter });
}
async onModuleInit(): Promise<void> {
await this.$connect();
}
async onModuleDestroy(): Promise<void> {
await this.$disconnect();
}
}