ae5558d8b5
* Add node mailer packages * Init mailer module * Add logger transport * Use env variable to get transport * Revert "Add node mailer packages" This reverts commit 3fb954f0caef94266f96ff5f08de750073ab3491. * Add nodemailer * Use driver pattern * Use logger * Fix yarn install * Code review returns * Add configuration examples for smtp * Fix merge conflict * Add missing packages * Fix ci
30 lines
941 B
TypeScript
30 lines
941 B
TypeScript
import { DynamicModule, Global } from '@nestjs/common';
|
|
|
|
import { EmailModuleAsyncOptions } from 'src/integrations/email/interfaces/email.interface';
|
|
|
|
import { EMAIL_DRIVER } from 'src/integrations/email/email.constants';
|
|
import { LoggerDriver } from 'src/integrations/email/drivers/logger.driver';
|
|
import { SmtpDriver } from 'src/integrations/email/drivers/smtp.driver';
|
|
import { EmailService } from 'src/integrations/email/email.service';
|
|
|
|
@Global()
|
|
export class EmailModule {
|
|
static forRoot(options: EmailModuleAsyncOptions): DynamicModule {
|
|
const provider = {
|
|
provide: EMAIL_DRIVER,
|
|
useFactory: (...args: any[]) => {
|
|
const config = options.useFactory(...args);
|
|
|
|
return config ? new SmtpDriver(config) : new LoggerDriver();
|
|
},
|
|
inject: options.inject || [],
|
|
};
|
|
|
|
return {
|
|
module: EmailModule,
|
|
providers: [EmailService, provider],
|
|
exports: [EmailService],
|
|
};
|
|
}
|
|
}
|