Files
dmail-api/src/app.module.ts
T

66 lines
2.7 KiB
TypeScript

import { MikroOrmModule } from "@mikro-orm/nestjs";
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 { JwtModule } from "@nestjs/jwt";
import { ThrottlerModule } from "@nestjs/throttler";
import { bullMqConfig } from "./configs/bullmq.config";
import { cacheConfig } from "./configs/cache.config";
import { httpConfig } from "./configs/http.config";
import { jwtConfig } from "./configs/jwt.config";
import { databaseConfig } from "./configs/mikro-orm.config";
import { rateLimitConfig } from "./configs/rateLimit.config";
import { HTTPLogger } from "./core/middlewares/logger.middleware";
import { AiAssistantModule } from "./modules/ai-assistant/ai-assistant.module";
import { AuthModule } from "./modules/auth/auth.module";
import { DomainsModule } from "./modules/domains/domains.module";
import { EmailModule } from "./modules/email/email.module";
import { EmailGatewayModule } from "./modules/email-gateway/email-gateway.module";
import { EmailUtilsModule } from "./modules/email-utils/email-utils.module";
import { MailServerModule } from "./modules/mail-server/mail-server.module";
import { MailboxModule } from "./modules/mailbox/mailbox.module";
import { NotificationModule } from "./modules/notifications/notifications.module";
import { QuotaSyncModule } from "./modules/quota-sync/quota-sync.module";
import { SettingModule } from "./modules/settings/settings.module";
import { EmailSignaturesModule } from "./modules/signatures/email-signatures.module";
import { TemplatesModule } from "./modules/templates/templates.module";
import { UploaderModule } from "./modules/uploader/uploader.module";
import { UsersModule } from "./modules/users/users.module";
import { UtilsModule } from "./modules/utils/utils.module";
@Module({
imports: [
ConfigModule.forRoot({ isGlobal: true, cache: true }),
JwtModule.registerAsync(jwtConfig()),
BullModule.forRootAsync(bullMqConfig()),
CacheModule.registerAsync(cacheConfig()),
HttpModule.registerAsync(httpConfig()),
ThrottlerModule.forRootAsync(rateLimitConfig()),
MikroOrmModule.forRootAsync(databaseConfig),
UtilsModule,
AiAssistantModule,
AuthModule,
UsersModule,
DomainsModule,
EmailModule,
MailboxModule,
MailServerModule,
QuotaSyncModule,
EmailSignaturesModule,
TemplatesModule,
SettingModule,
NotificationModule,
UploaderModule,
EmailUtilsModule,
EmailGatewayModule,
],
})
export class AppModule implements NestModule {
configure(consumer: MiddlewareConsumer) {
consumer.apply(HTTPLogger).forRoutes("*");
}
}