import { Injectable, OnModuleDestroy, OnModuleInit } from '@nestjs/common';
import { PrismaClient } from '@prisma/client';
import prismaConfig from 'prisma.config';
import { PrismaPg } from '@prisma/adapter-pg';

@Injectable()
export class PrismaService extends PrismaClient implements OnModuleInit, OnModuleDestroy {
    constructor() {
        super({
            adapter: new PrismaPg({
                connectionString: prismaConfig.datasource?.url,
            })
        });
    }
    async onModuleInit() {
        try {
            await this.$connect();
            console.log('✅ Prisma connected with PostgreSQL adapter');
        }
        catch (error) {
            console.error('❌ Prisma connection error:', error);
            throw error;
        }
    }

    async onModuleDestroy() {
        await this.$disconnect();
        console.log('✅ Prisma disconnected');
    }
}