src/modules/app/app.module.ts
configure | ||||||
configure(consumer: MiddlewareConsumer)
|
||||||
Defined in src/modules/app/app.module.ts:72
|
||||||
Parameters :
Returns :
MiddlewareConsumer | void
|
import 'providers/polyfill.provider';
import { Module, NestModule, MiddlewareConsumer } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { SnakeNamingStrategy } from 'utils/strategies';
import { ConfigModule, ConfigService } from '@nestjs/config';
import { SharedModule } from 'modules/shared/shared.module';
import { UserModule } from 'modules/user/user.module';
import { AuthModule } from 'modules/auth/auth.module';
import { PartnerModule } from 'modules/partner/partner.module';
import { AppService } from 'modules/app/services';
import { contextMiddleware } from 'middlewares';
import { UserAuthSubscriber } from 'modules/user/subscribers';
import { MailerModule } from '@nestjs-modules/mailer';
import { HandlebarsAdapter } from '@nestjs-modules/mailer/dist/adapters/handlebars.adapter';
import { UserSubscriber } from 'modules/user/subscribers/user.subscriber';
@Module({
imports: [
ConfigModule.forRoot({ isGlobal: true }),
AuthModule,
UserModule,
PartnerModule,
TypeOrmModule.forRootAsync({
imports: [SharedModule],
useFactory: (configService: ConfigService) => ({
type: 'postgres',
host: configService.get('DB_HOST'),
port: +configService.get<number>('DB_PORT'),
username: configService.get('DB_USERNAME'),
password: configService.get('DB_PASSWORD'),
database: configService.get('DB_DATABASE'),
entities: [__dirname + '/../../modules/**/*.entity{.ts,.js}'],
namingStrategy: new SnakeNamingStrategy(),
synchronize: true,
// migrations: [__dirname + '/../../migrations/*{.ts,.js}'],
subscribers: [UserSubscriber, UserAuthSubscriber],
// migrationsRun: true,
logging: true,
logger: 'file',
}),
inject: [ConfigService],
}),
MailerModule.forRootAsync({
useFactory: (configService: ConfigService) => ({
transport: {
host: configService.get('EMAIL_HOST'),
port: +configService.get('EMAIL_PORT'),
secure: false,
auth: {
user: configService.get('EMAIL_ADDRESS'),
pass: configService.get('EMAIL_PASSWORD'),
},
tls: {
rejectUnauthorized: false,
},
},
defaults: {
from: '"Moovaz saas" <naingoted@gmail.com>',
},
template: {
dir: process.cwd() + 'src/modules/transaction/templates/',
adapter: new HandlebarsAdapter(),
options: { strict: true },
},
}),
inject: [ConfigService],
}),
],
providers: [AppService],
})
export class AppModule implements NestModule {
configure(consumer: MiddlewareConsumer): MiddlewareConsumer | void {
consumer.apply(contextMiddleware).forRoutes('*');
}
}