Files
cargaMasiva_api/src/app.module.ts
T
2025-07-03 12:26:02 -06:00

68 lines
2.0 KiB
TypeScript

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<number>('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<boolean>('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 { }