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 }); } }