import { FastifyMulterModule } from "@nest-lab/fastify-multer"; import { HttpModule } from "@nestjs/axios"; import { BullModule } from "@nestjs/bullmq"; import { CacheModule } from "@nestjs/cache-manager"; import { MiddlewareConsumer, Module, NestModule } from "@nestjs/common"; import { ConfigModule } from "@nestjs/config"; import { ThrottlerModule } from "@nestjs/throttler"; import { TypeOrmModule } from "@nestjs/typeorm"; import { MailerModule } from "@nestjs-modules/mailer"; // import { TelegrafModule } from "nestjs-telegraf"; import { bullMqConfig } from "./configs/bullmq.config"; import { cacheConfig } from "./configs/cache.config"; import { mailerConfig } from "./configs/mailer.config"; import { rateLimitConfig } from "./configs/rateLimit.config"; // import { telegrafConfig } from "./configs/telegraf.config"; import { databaseConfigs } from "./configs/typeorm.config"; import { HTTPLogger } from "./core/middlewares/logger.middleware"; import { AddressModule } from "./modules/address/address.module"; import { AdsModule } from "./modules/ads/ads.module"; import { AnnouncementsModule } from "./modules/announcements/announcement.module"; import { AuthModule } from "./modules/auth/auth.module"; import { BlogsModule } from "./modules/blogs/blogs.module"; import { ContactUsModule } from "./modules/contact-us/contact-us.module"; import { CriticismModule } from "./modules/criticisms/criticisms.module"; import { DanakServicesModule } from "./modules/danak-services/danak-services.module"; import { DashboardModule } from "./modules/dashboards/dashboard.module"; import { DiscountsModule } from "./modules/discounts/discounts.module"; import { InvoicesModule } from "./modules/invoices/invoices.module"; import { LandingModule } from "./modules/landing/landing.module"; import { LearningModule } from "./modules/learnings/learning.module"; import { LoggerModule } from "./modules/logger/logger.module"; import { NotificationModule } from "./modules/notifications/notifications.module"; import { PaymentsModule } from "./modules/payments/payments.module"; import { ReferralsModule } from "./modules/referrals/referrals.module"; import { SettingModule } from "./modules/settings/settings.module"; import { SubscriptionsModule } from "./modules/subscriptions/subscriptions.module"; import { TicketsModule } from "./modules/tickets/tickets.module"; import { UploaderModule } from "./modules/uploader/uploader.module"; import { UsersModule } from "./modules/users/users.module"; import { WalletsModule } from "./modules/wallets/wallets.module"; @Module({ imports: [ // TelegrafModule.forRootAsync(telegrafConfig()), MailerModule.forRootAsync(mailerConfig()), BullModule.forRootAsync(bullMqConfig()), ThrottlerModule.forRootAsync(rateLimitConfig()), ConfigModule.forRoot({ cache: true, isGlobal: true }), CacheModule.registerAsync(cacheConfig()), TypeOrmModule.forRootAsync(databaseConfigs()), HttpModule.register({ global: true, timeout: 10000, headers: { "Content-Type": "application/json" } }), FastifyMulterModule.register({ limits: { fileSize: 10 * 1024 * 1024, fieldNameSize: 200, fieldSize: 10 * 1024 * 1024, fields: 10, parts: 10, }, }), AuthModule, UsersModule, TicketsModule, DanakServicesModule, AnnouncementsModule, UploaderModule, CriticismModule, SettingModule, ContactUsModule, WalletsModule, PaymentsModule, NotificationModule, InvoicesModule, SubscriptionsModule, LearningModule, AdsModule, AddressModule, DashboardModule, BlogsModule, LoggerModule, LandingModule, ReferralsModule, DiscountsModule, ], controllers: [], }) export class AppModule implements NestModule { configure(consumer: MiddlewareConsumer) { consumer.apply(HTTPLogger).forRoutes("*"); } }