import { NestFactory } from '@nestjs/core';
import * as cookieParser from 'cookie-parser';
import { SwaggerModule, DocumentBuilder } from '@nestjs/swagger';
import { AppModule } from './app.module';
import { ValidationPipe } from '@nestjs/common';
import { LoggerMiddleware } from './common/loggerMiddleware';

async function bootstrap() {
  const app = await NestFactory.create(AppModule, {
    cors: process.env.CORS === 'TRUE',
  });
  app.use(new LoggerMiddleware(), cookieParser());

  // バリデーター(+型の自動変換機能)を適用
  app.useGlobalPipes(new ValidationPipe({ transform: true }));

  /*TODO SwaggerUIでの表示はローカルのみにする
  下の参考ページのような感じで対応する予定
  https://tech.mobilefactory.jp/entry/2019/12/18/180000
  */

  const options = new DocumentBuilder()
    .setTitle('OMDSOpenAPI')
    .setVersion('1.0.0')
    .build();
  const document = SwaggerModule.createDocument(app, options);
  SwaggerModule.setup('api', app, document);

  await app.listen(80);
}
bootstrap();
