import { Global, Module } from '@nestjs/common'; import { ConfigService } from '@nestjs/config'; import { MAIL_PROVIDER } from './mail-provider'; import { LogMailProvider } from './log-mail.provider'; import { SmtpMailProvider } from './smtp-mail.provider'; import { MailService } from './mail.service'; /// Global so any feature module can inject MailService. Provider defaults to /// log-only; MAIL_PROVIDER=smtp switches to a real SMTP transport. @Global() @Module({ providers: [ MailService, { provide: MAIL_PROVIDER, inject: [ConfigService], useFactory: (config: ConfigService) => config.get('MAIL_PROVIDER') === 'smtp' ? new SmtpMailProvider(config) : new LogMailProvider(), }, ], exports: [MailService], }) export class MailModule {}