mirror of
https://github.com/vernu/textbee.git
synced 2026-04-17 13:28:36 -04:00
78 lines
2.1 KiB
TypeScript
78 lines
2.1 KiB
TypeScript
import {
|
|
MiddlewareConsumer,
|
|
Module,
|
|
NestModule,
|
|
RequestMethod,
|
|
} from '@nestjs/common'
|
|
import { MongooseModule } from '@nestjs/mongoose'
|
|
import { GatewayModule } from './gateway/gateway.module'
|
|
import { AuthModule } from './auth/auth.module'
|
|
import { UsersModule } from './users/users.module'
|
|
import { ThrottlerModule } from '@nestjs/throttler'
|
|
import { APP_GUARD } from '@nestjs/core/constants'
|
|
import { WebhookModule } from './webhook/webhook.module'
|
|
import { ThrottlerByIpGuard } from './auth/guards/throttle-by-ip.guard'
|
|
import { Injectable, NestMiddleware } from '@nestjs/common'
|
|
import { Request, Response, NextFunction } from 'express'
|
|
import { ScheduleModule } from '@nestjs/schedule'
|
|
import { BillingModule } from './billing/billing.module'
|
|
import { ConfigModule, ConfigService } from '@nestjs/config'
|
|
import { BullModule } from '@nestjs/bull'
|
|
import { SupportModule } from './support/support.module'
|
|
import { EventEmitterModule } from '@nestjs/event-emitter'
|
|
|
|
@Injectable()
|
|
export class LoggerMiddleware implements NestMiddleware {
|
|
use(req: Request, res: Response, next: NextFunction) {
|
|
if (next) {
|
|
next()
|
|
}
|
|
}
|
|
}
|
|
|
|
@Module({
|
|
imports: [
|
|
MongooseModule.forRoot(process.env.MONGO_URI),
|
|
ConfigModule.forRoot({
|
|
isGlobal: true,
|
|
}),
|
|
EventEmitterModule.forRoot(),
|
|
ThrottlerModule.forRoot([
|
|
{
|
|
ttl: 60000,
|
|
limit: 500,
|
|
},
|
|
]),
|
|
ScheduleModule.forRoot(),
|
|
BullModule.forRootAsync({
|
|
imports: [ConfigModule],
|
|
inject: [ConfigService],
|
|
useFactory: async (configService: ConfigService) => {
|
|
return {
|
|
redis: configService.get('REDIS_URL'),
|
|
}
|
|
},
|
|
}),
|
|
AuthModule,
|
|
UsersModule,
|
|
GatewayModule,
|
|
WebhookModule,
|
|
BillingModule,
|
|
SupportModule,
|
|
],
|
|
controllers: [],
|
|
providers: [
|
|
{
|
|
provide: APP_GUARD,
|
|
useClass: ThrottlerByIpGuard,
|
|
},
|
|
],
|
|
})
|
|
export class AppModule implements NestModule {
|
|
configure(consumer: MiddlewareConsumer) {
|
|
consumer
|
|
.apply(LoggerMiddleware)
|
|
.forRoutes({ path: '*', method: RequestMethod.ALL })
|
|
}
|
|
}
|