Backend/src/main.ts

65 lines
1.8 KiB
TypeScript

import morgan from 'morgan';
import { Logger, ValidationPipe, VersioningType } from '@nestjs/common';
import { NestFactory } from '@nestjs/core';
import { AppModule } from './infrastructure/modules/app.module';
import { SwaggerModule, DocumentBuilder, SwaggerDocumentOptions } from '@nestjs/swagger';
import { ConfigService } from '@nestjs/config';
/**
* Main entry point of the application
* @returns Nothing
*/
async function bootstrap() {
// Http Server
const app = await NestFactory.create(AppModule);
app.use(morgan('dev'));
app.useGlobalPipes(
new ValidationPipe({
disableErrorMessages: false,
}),
);
/**
* Enabling URI-type versioning of the API
*/
app.enableVersioning({
type: VersioningType.URI,
});
/**
* Configuration of the Swagger document
*/
const config = new DocumentBuilder()
.setTitle('Freeland')
.setDescription('Freeland open library API')
.setVersion('0.0.1')
.build();
const document = SwaggerModule.createDocument(app, config, {
deepScanRoutes: true,
});
SwaggerModule.setup('api', app, document);
try {
const configService = app.get(ConfigService);
const NODE_PORT = configService.get('NODE_PORT');
if (!NODE_PORT) {
throw new Error('Please define the node port as an environmental variable');
}
/*const ES_PORT = configService.get('ES_PORT');
if(!ES_PORT) {
throw new Error('Please define the Elasticsearch port as an environmental variable');
}*/
await app.listen(NODE_PORT, () => Logger.log('HTTP Service is listening on port ' + String(NODE_PORT), 'App'));
} catch (error) {
console.log(error);
return;
}
}
//==================================================================================================================================
bootstrap();