import { Module } from '@nestjs/common'; import { ConfigModule, ConfigService } from '@nestjs/config'; import { MongooseModule } from '@nestjs/mongoose'; import { ScheduleModule } from '@nestjs/schedule'; import { MailerModule } from '@nestjs-modules/mailer'; import { AppController } from './app.controller'; import { AppService } from './app.service'; import { EventsModule } from './events/events.module'; import { UsersModule } from './users/users.module'; import { AuthModule } from './auth/auth.module'; import { XIntegrationModule } from './x-integration/x-integration.module'; import { CloudinaryModule } from './cloudinary/cloudinary.module'; import { DashboardModule } from './dashboard/dashboard.module'; import { AdminModule } from './admin/admin.module'; import { NotificationsModule } from './notifications/notifications.module'; @Module({ imports: [ ConfigModule.forRoot({ isGlobal: true, }), MailerModule.forRootAsync({ imports: [ConfigModule], useFactory: async (configService: ConfigService) => ({ transport: { host: configService.get('MAIL_HOST'), port: configService.get('MAIL_PORT'), secure: false, auth: { user: configService.get('MAIL_USER'), pass: configService.get('MAIL_PASS'), }, }, defaults: { from: `"${configService.get('MAIL_FROM_NAME')}" <${configService.get('MAIL_FROM_EMAIL')}>`, }, }), inject: [ConfigService], }), MongooseModule.forRootAsync({ imports: [ConfigModule], useFactory: async (configService: ConfigService) => ({ uri: configService.get('MONGO_URI'), }), inject: [ConfigService], }), ScheduleModule.forRoot(), EventsModule, UsersModule, AuthModule, XIntegrationModule, CloudinaryModule, DashboardModule, AdminModule, NotificationsModule, ], controllers: [AppController], providers: [AppService], }) export class AppModule { constructor(private configService: ConfigService) {} }