Files
AFFiNE-Mirror/packages/backend/server/src/base/prisma/index.ts
T
2024-12-13 06:27:13 +00:00

33 lines
746 B
TypeScript

import './config';
import { Global, Module, Provider } from '@nestjs/common';
import { PrismaClient } from '@prisma/client';
import { Config } from '../config';
import { PrismaService } from './service';
// only `PrismaClient` can be injected
const clientProvider: Provider = {
provide: PrismaClient,
useFactory: (config: Config) => {
if (PrismaService.INSTANCE) {
return PrismaService.INSTANCE;
}
return new PrismaService(config.prisma);
},
inject: [Config],
};
@Global()
@Module({
providers: [clientProvider],
exports: [clientProvider],
})
export class PrismaModule {}
export { PrismaService } from './service';
export type PrismaTransaction = Parameters<
Parameters<PrismaClient['$transaction']>[0]
>[0];