65 lines
2.3 KiB
TypeScript
65 lines
2.3 KiB
TypeScript
import { Module, MiddlewareConsumer, NestModule } from '@nestjs/common';
|
|
import { ConfigModule, ConfigService } from '@nestjs/config';
|
|
import { TypeOrmModule } from '@nestjs/typeorm';
|
|
import { createOracleConfig } from './core/configs/typeorm.oracle.config';
|
|
import { createPostgresConfig } from './core/configs/typeorm.postgres.config';
|
|
import { LogisticModule } from './logistic/logistic.module';
|
|
import { AuthModule } from './auth/auth/auth.module';
|
|
import { DataConsultModule } from './data-consult/data-consult.module';
|
|
import { OrdersModule } from './orders/modules/orders.module';
|
|
import { HttpModule } from '@nestjs/axios';
|
|
import { DebModule } from './orders/modules/deb.module';
|
|
import jwtConfig from './auth/jwt.config';
|
|
import { UsersModule } from './auth/users/users.module';
|
|
import { ProductsModule } from './products/products.module';
|
|
import { ThrottlerModule, ThrottlerModuleOptions } from '@nestjs/throttler';
|
|
import { RateLimiterMiddleware } from './common/middlewares/rate-limiter.middleware';
|
|
import { RequestSanitizerMiddleware } from './common/middlewares/request-sanitizer.middleware';
|
|
import { clientes } from './data-consult/clientes.module';
|
|
import { PartnersModule } from './partners/partners.module';
|
|
|
|
@Module({
|
|
imports: [
|
|
UsersModule,
|
|
ConfigModule.forRoot({ isGlobal: true, load: [jwtConfig] }),
|
|
TypeOrmModule.forRootAsync({
|
|
name: 'oracle',
|
|
inject: [ConfigService],
|
|
useFactory: createOracleConfig,
|
|
}),
|
|
TypeOrmModule.forRootAsync({
|
|
name: 'postgres',
|
|
inject: [ConfigService],
|
|
useFactory: createPostgresConfig,
|
|
}),
|
|
ThrottlerModule.forRootAsync({
|
|
imports: [ConfigModule],
|
|
inject: [ConfigService],
|
|
useFactory: (config: ConfigService): ThrottlerModuleOptions => ({
|
|
throttlers: [
|
|
{
|
|
ttl: config.get<number>('THROTTLE_TTL', 60),
|
|
limit: config.get<number>('THROTTLE_LIMIT', 10),
|
|
},
|
|
],
|
|
}),
|
|
}),
|
|
LogisticModule,
|
|
HttpModule,
|
|
OrdersModule,
|
|
clientes,
|
|
ProductsModule,
|
|
DataConsultModule,
|
|
AuthModule,
|
|
DebModule,
|
|
PartnersModule,
|
|
],
|
|
})
|
|
export class AppModule implements NestModule {
|
|
configure(consumer: MiddlewareConsumer) {
|
|
consumer.apply(RequestSanitizerMiddleware).forRoutes('*');
|
|
|
|
consumer.apply(RateLimiterMiddleware).forRoutes('auth', 'users');
|
|
}
|
|
}
|