40 lines
1.1 KiB
TypeScript
40 lines
1.1 KiB
TypeScript
// src/prisma/prisma.service.ts
|
|
import {Injectable, OnModuleInit, OnModuleDestroy} from '@nestjs/common';
|
|
import {PrismaClient} from '../src/generated/prisma/client';
|
|
import {PrismaPg} from "@prisma/adapter-pg";
|
|
|
|
|
|
@Injectable()
|
|
export class PrismaService extends PrismaClient implements OnModuleInit, OnModuleDestroy {
|
|
constructor() {
|
|
const adapter = new PrismaPg({
|
|
connectionString: process.env.DATABASE_URL!,
|
|
});
|
|
super({adapter});
|
|
}
|
|
|
|
async onModuleInit() {
|
|
try {
|
|
await this.$connect();
|
|
console.log('✅ Đã kết nối Database thành công');
|
|
} catch (error) {
|
|
console.error('❌ Lỗi kết nối Database:', error);
|
|
}
|
|
}
|
|
|
|
async getManyAndCount<T>(
|
|
model: any,
|
|
args: any
|
|
) {
|
|
const [data, total] = await this.$transaction([
|
|
model.findMany(args),
|
|
model.count({ where: args.where }),
|
|
]);
|
|
return { data, total };
|
|
}
|
|
|
|
async onModuleDestroy() {
|
|
await this.$disconnect(); // Ngắt kết nối khi tắt app
|
|
}
|
|
}
|