northwind-api-gateway / apps /northwindapi /src /northwindapi.module.ts
mishrabp's picture
Upload folder using huggingface_hub
97dab2a verified
import { Module, NestModule, MiddlewareConsumer } from '@nestjs/common';
import { NorthwindapiController } from './northwindapi.controller';
import { NorthwindapiService } from './northwindapi.service';
import { ThrottlerModule } from '@nestjs/throttler';
import { TypeOrmModule } from '@nestjs/typeorm';
import { ConfigModule } from '@nestjs/config';
import AppDataSource from './config/typeorm.config'; // Adjust path as needed
import { ApploggerModule } from '@bpm/common';
import { CategoryModule } from './modules/category/category.module';
import { CustomerModule } from './modules/customer/customer.module';
import { EmployeeModule } from './modules/employee/employee.module';
import { SupplierModule } from './modules/supplier/supplier.module';
import { ShipperModule } from './modules/shipper/shipper.module';
import { ProductModule } from './modules/product/product.module';
import { OrderModule } from './modules/order/order.module';
import { OrderDetailModule } from './modules/order-detail/order-detail.module';
import { LoggerMiddleware } from '@bpm/common/middlewares/logger/logger.middleware';
@Module({
imports: [
ThrottlerModule.forRoot([
{
name: 'short',
ttl: 1000, // 3 requests per 1 seconds (short limit)
limit: 1,
},
{
name: 'long',
ttl: 60000, // 100 requests per 1 minute (long limit)
limit: 100,
}
]),
//Config module
ConfigModule.forRoot({ isGlobal: true }),
//Database connection
TypeOrmModule.forRootAsync({
useFactory: async () => AppDataSource.options,
}),
ApploggerModule,
CategoryModule,
CustomerModule,
EmployeeModule,
SupplierModule,
ShipperModule,
ProductModule,
OrderModule,
OrderDetailModule,
],
controllers: [NorthwindapiController],
providers: [NorthwindapiService],
})
export class NorthwindapiModule implements NestModule {
// No need to bind manually if LoggerMiddleware is injectable
configure(consumer: MiddlewareConsumer) {
consumer
.apply(LoggerMiddleware) // Apply LoggerMiddleware directly
.forRoutes('*'); // Apply to all routes
}
}