import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import { EasyConfiguration } from './configuration/easyConfig.service';
import { EasyconfigService } from 'nestjs-easyconfig';
import { ValidationPipe } from '@nestjs/common';
require('dotenv').config();

async function bootstrap() {
  console.log('INICIO-----------------------------------');
  const app = await NestFactory.create(AppModule);

  const configService: EasyConfiguration = app.get(EasyconfigService);
  const objConfig = configService['envConfig'];

  app.useGlobalPipes(new ValidationPipe());
  app.enableCors({ credentials: true, origin: objConfig.APP_ORIGIN });
  console.log('ENVIROMENTS');
  console.log('DB_HOST:', objConfig.DB_HOST || process.env.DB_HOST);
  console.log('DB_USERNAME:', objConfig.DB_USERNAME || process.env.DB_USERNAME);
  console.log('DB_PASSWORD:', objConfig.DB_PASSWORD || process.env.DB_PASSWORD);
  console.log('DB_DATABASE:', objConfig.DB_DATABASE || process.env.DB_DATABASE);
  console.log('DB_PORT:', objConfig.DB_PORT || process.env.DB_PORT);
  console.log(`APP_ORIGIN: ${objConfig.APP_ORIGIN || process.env.PORT}`);
  console.log(`PORT: ${objConfig.PORT || process.env.PORT}`);

  console.log('MAIL_HOST:', objConfig.MAIL_HOST || process.env.MAIL_HOST);
  console.log('MAIL_PORT:', objConfig.MAIL_PORT || process.env.MAIL_PORT);
  console.log('MAIL_SECURE:', objConfig.MAIL_SECURE || process.env.MAIL_SECURE);
  console.log('MAIL_USER:', objConfig.MAIL_USER || process.env.MAIL_USER);
  console.log('MAIl_PASS:', objConfig.MAIL_PASS || process.env.MAIL_PASS);
  console.log(
    'MAIL_ENCODING:',
    objConfig.MAIL_ENCODING || process.env.MAIL_ENCODING,
  );
  console.log('MAIL_NAME:', objConfig.MAIL_NAME || process.env.MAIL_NAME);
  await app.listen(objConfig.PORT || process.env.PORT || 4000);

  console.log('FINALIZO-----------------------------------');
}
bootstrap();
