boilerplate-nestjs-api-crud/src/app.module.ts

64 lines
1.8 KiB
TypeScript

import {
Logger,
MiddlewareConsumer,
Module,
NestModule,
RequestMethod,
} from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';
import { APP_FILTER } from '@nestjs/core';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { UsersModule } from './users/users.module';
import { AllExceptionsFilter } from './logger/any-exception.filter';
import loggerMiddleware from './logger/logger.middleware';
import { TypeOrmModule } from '@nestjs/typeorm';
import { MySqlCompanyModule } from './mysqlcompany/mysqlcompany.module';
import { OrmMongoCompanyModule } from './ormmongocompany/ormmongocompany.module';
@Module({
imports: [
// For Configuration
ConfigModule.forRoot(),
// For ORM-MySQL
TypeOrmModule.forRoot({
type: 'mysql',
host: 'localhost',
port: 23306,
username: 'root',
password: 'example',
database: 'example_nodejs_nest_crud_company',
// entities: ['dist/modules/**/*.mysql.entity{.ts,.js}'],
autoLoadEntities: true,
// IMPORTANT: disable sync
synchronize: false,
// synchronize: true,
logging: true,
}),
// Router resigration for module (2nd level) will be declared inside the module
// RouterModule.register([
// ]),
UsersModule,
MySqlCompanyModule,
OrmMongoCompanyModule,
],
controllers: [AppController],
providers: [
Logger,
AppService,
{
provide: APP_FILTER,
// useClass: HttpExceptionFilter,
useClass: AllExceptionsFilter,
},
],
})
export class AppModule implements NestModule {
// Apply logger middleware for all routes
configure(consumer: MiddlewareConsumer) {
consumer
.apply(loggerMiddleware)
.forRoutes({ path: '*', method: RequestMethod.ALL });
}
}