import { MailerModule } from '@nestjs-modules/mailer'; import { forwardRef, Module } from '@nestjs/common'; import { ConfigService } from '@nestjs/config'; import { TypeOrmModule } from '@nestjs/typeorm'; import { TwilioModule } from 'nestjs-twilio'; import { buildMailerOptions, buildTwilioOptions } from '~/core/module-options'; import { UserModule } from '~/user/user.module'; import { NotificationsController } from './controllers'; import { Notification } from './entities'; import { NotificationsRepository } from './repositories'; import { FirebaseService, NotificationsService, TwilioService } from './services'; @Module({ imports: [ TypeOrmModule.forFeature([Notification]), TwilioModule.forRootAsync({ useFactory: buildTwilioOptions, inject: [ConfigService], }), MailerModule.forRootAsync({ useFactory: buildMailerOptions, inject: [ConfigService], }), forwardRef(() => UserModule), ], providers: [NotificationsService, FirebaseService, NotificationsRepository, TwilioService], exports: [NotificationsService], controllers: [NotificationsController], }) export class NotificationModule {}