Files
x-news-ai/prisma/prisma.service.ts
T
2026-05-14 08:42:03 +00:00

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
}
}