import { INestApplication } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
import { SwaggerModule } from '@nestjs/swagger';
import { swaggerConfig } from 'config/swagger/swagger.config';
import basicAuth from 'express-basic-auth';
const SWAGGER_PATH = '/api-docs';

export const setupSwagger = (app: INestApplication) => {
  const swaggerPassword = app.get(ConfigService).get('SWAGGER_PASSWORD');

  if (process.env.NODE_ENV !== 'development') {
    app.use(
      [SWAGGER_PATH, `${SWAGGER_PATH}-json`],
      basicAuth({
        challenge: true,
        users: {
          admin: swaggerPassword,
        },
      }),
    );
  }

  const document = SwaggerModule.createDocument(app, swaggerConfig);
  SwaggerModule.setup(SWAGGER_PATH, app, document);
};
