import { Env } from '@/common/utils';
import { Module } from '@nestjs/common';
import { ConfigModule, ConfigService } from '@nestjs/config';
import { LoggerModule as PinoModule } from 'nestjs-pino';

@Module({
  imports: [
    PinoModule.forRootAsync({
      imports: [ConfigModule],
      inject: [ConfigService],
      useFactory: (config: ConfigService<Env>) => {
        const isProduction = config.get('NODE_ENV') === 'production';

        // Opciones base de pinoHttp
        const pinoHttpOptions: any = {
          // Usamos 'any' temporalmente o definimos una interfaz más precisa si es necesario
          quietReqLogger: false,
          quietResLogger: false,
        };

        // Solo añade la configuración de 'transport' si NO estamos en producción
        if (!isProduction) {
          pinoHttpOptions.transport = { target: 'pino-pretty' };
        }

        return {
          pinoHttp: pinoHttpOptions,
        };
      },
    }),
  ],
})
export class LoggerModule {}
