app.setup.ts 1.1 KB

12345678910111213141516171819202122232425262728293031323334
  1. import { INestApplication, ValidationPipe } from '@nestjs/common';
  2. import { ConfigService } from '@nestjs/config';
  3. import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger';
  4. import { HttpExceptionFilter } from './common/filters/http-exception.filter';
  5. import { ApiResponseInterceptor } from './common/interceptors/api-response.interceptor';
  6. export function configureApp(app: INestApplication): void {
  7. const configService = app.get(ConfigService);
  8. app.setGlobalPrefix('api/v1');
  9. app.useGlobalPipes(
  10. new ValidationPipe({
  11. whitelist: true,
  12. transform: true,
  13. forbidNonWhitelisted: true,
  14. }),
  15. );
  16. app.useGlobalInterceptors(new ApiResponseInterceptor());
  17. app.useGlobalFilters(new HttpExceptionFilter());
  18. app.enableCors({
  19. origin: configService.get<string>('corsOrigin') ?? 'http://127.0.0.1:5173',
  20. });
  21. const document = SwaggerModule.createDocument(
  22. app,
  23. new DocumentBuilder()
  24. .setTitle('Aitori Backend')
  25. .setDescription('Backend skeleton for frontend integration')
  26. .setVersion('0.1.0')
  27. .build(),
  28. );
  29. SwaggerModule.setup('api/docs', app, document);
  30. }