nest-box
Version:
A lot of modules for NestJS in this box!
49 lines (45 loc) • 1.61 kB
text/typescript
import { DynamicModule, Global, Module } from '@nestjs/common';
import { EmailService } from './email.service';
import { ConfigurableModuleClass, MODULE_OPTIONS_TOKEN } from './email.options';
import { EmailModuleOptions } from './email.interface';
import { ConfigModule, ConfigService } from '@nestjs/config';
()
({
providers: [EmailService],
exports: [EmailService],
})
export class EmailModule extends ConfigurableModuleClass {
static forRoot(options: EmailModuleOptions): DynamicModule {
return {
module: EmailModule,
providers: [
{
provide: MODULE_OPTIONS_TOKEN,
useValue: options,
},
EmailService,
],
exports: [EmailService],
};
}
static forRootAsync(): DynamicModule {
return {
module: EmailModule,
imports: [ConfigModule],
providers: [
{
provide: MODULE_OPTIONS_TOKEN,
useFactory: (configService: ConfigService) => ({
host: configService.get<string>('EMAIL_HOST'),
port: configService.get<number>('EMAIL_PORT'),
user: configService.get<string>('EMAIL_USER'),
pass: configService.get<string>('EMAIL_PASS'),
}),
inject: [ConfigService],
},
EmailService,
],
exports: [EmailService],
};
}
}