Files
cargaMasiva_api/src/app.module.ts
T

61 lines
1.8 KiB
TypeScript
Raw Normal View History

import { Logger, Module } from '@nestjs/common';
2025-06-11 10:46:45 -06:00
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';
2025-06-11 10:46:45 -06:00
@Module({
imports: [
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'),
};
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,
dropSchema: true, // solo para desarrollo
};
},
}),
TypeOrmModule.forFeature(Object.values(entities)),
ExcelModule,
AuthModule,
MovimientoModule,
UsuariosModule
],
2025-06-11 10:46:45 -06:00
controllers: [AppController],
providers: [AppService],
})
export class AppModule { }