import { Logger, Module } from '@nestjs/common'; import { AppController } from './app.controller'; import { AppService } from './app.service'; import { ConfigModule, ConfigService } from '@nestjs/config'; import { TypeOrmModule } from '@nestjs/typeorm'; import * as entities from './entities/entities'; import { ExcelModule } from './excel/excel.module'; import { AuthModule } from './auth/auth.module'; import { MovimientoModule } from './movimiento/movimiento.module'; import { UsuariosModule } from './usuarios/usuarios.module'; import { MailService } from './mail/mail.service'; import { MailModule } from './mail/mail.module'; import { ScheduleModule } from '@nestjs/schedule'; @Module({ imports: [ ScheduleModule.forRoot(), ConfigModule.forRoot({ isGlobal: true }), TypeOrmModule.forRootAsync({ imports: [ConfigModule], inject: [ConfigService], useFactory: async (config: ConfigService) => { const dbConfig = { type: 'mysql' as const, host: config.get('DB_HOST', 'database'), port: config.get('DB_PORT', 3306), username: config.get('DB_USER', 'root'), // no prints en claro en prod: password: config.get('DB_PASS', ''), database: config.get('DB_NAME', 'test'), dropSchema: false, // solo para desarrollo }; Logger.log('[DB CONFIG] ' + JSON.stringify({ ...dbConfig, password: '***' }), 'TypeORM'); return { ...dbConfig, entities: Object.values(entities), synchronize: config.get('DB_SYNC', true), logging: ['error', 'warn', 'info', 'query', 'schema'], logger: 'advanced-console', retryAttempts: 5, retryDelay: 2000, }; }, }), TypeOrmModule.forFeature(Object.values(entities)), ExcelModule, AuthModule, MovimientoModule, UsuariosModule, MailModule ], controllers: [AppController], providers: [AppService], }) export class AppModule { }