/**
 * Prisma Database Service
 *
 * Provides database connection for the application.
 * Replaces: TUniConnection, TOradm, TMyDM from original C++ server.
 *
 * Original supported: Oracle (1), MySQL (2), SQLite (3), SQL Server (4)
 * This implementation uses Prisma - configure via DATABASE_URL in .env
 */
import { Injectable, OnModuleInit, OnModuleDestroy } from '@nestjs/common';
import { PrismaClient } from '@prisma/client';

@Injectable()
export class PrismaService
  extends PrismaClient
  implements OnModuleInit, OnModuleDestroy
{
  constructor() {
    super({
      log: process.env.NODE_ENV === 'development' ? ['query', 'error'] : ['error'],
    });
  }

  async onModuleInit() {
    await this.$connect();
  }

  async onModuleDestroy() {
    await this.$disconnect();
  }

  /**
   * Execute raw SQL - use with caution (security!)
   * Maps to: GetRDataSQL, ExecuteCommand from original server
   */
  async executeRaw<T = unknown>(sql: string, params: unknown[] = []): Promise<T> {
    return this.$queryRawUnsafe(sql, ...params) as Promise<T>;
  }
}
