Skip to content
Snippets Groups Projects
main.ts 1.5 KiB
Newer Older
/* c8 ignore start */
import type { ConfigType } from '@nestjs/config';
import type { MicroserviceOptions, NatsOptions } from '@nestjs/microservices';
zdravko iliev's avatar
zdravko iliev committed
import { VersioningType } from '@nestjs/common';
import { ConfigService } from '@nestjs/config';
import { NestFactory } from '@nestjs/core';
import { Transport } from '@nestjs/microservices';
zdravko iliev's avatar
zdravko iliev committed
import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger';
import { Application } from './application.js';
import { natsConfig } from './config/nats.config.js';
zdravko iliev's avatar
zdravko iliev committed

const app = await NestFactory.create(Application);
const configService = app.get(ConfigService);
app.enableCors();
zdravko iliev's avatar
zdravko iliev committed

const { url, user, password } = app.get(natsConfig.KEY) as ConfigType<
  typeof natsConfig
>;

const microserviceOptions: Required<NatsOptions> = {
  transport: Transport.NATS,
  options: {
};

if (user && password) {
  microserviceOptions.options.user = user;
  microserviceOptions.options.pass = password;
}

app.connectMicroservice<MicroserviceOptions>(microserviceOptions);
zdravko iliev's avatar
zdravko iliev committed

  defaultVersion: ['1'],
  type: VersioningType.URI,
});
zdravko iliev's avatar
zdravko iliev committed

const swaggerConfig = new DocumentBuilder()
  .setTitle('Gaia-X Connection Manager API')
  .setDescription('API documentation for GAIA-X Connection Manager')
  .setVersion('1.0')
  .build();
zdravko iliev's avatar
zdravko iliev committed

const document = SwaggerModule.createDocument(app, swaggerConfig);
zdravko iliev's avatar
zdravko iliev committed

SwaggerModule.setup('/swagger', app, document);
await app.startAllMicroservices();
zdravko iliev's avatar
zdravko iliev committed

await app.listen(configService.get('http.port') as number);
/* c8 ignore stop */