68 lines
2.0 KiB
TypeScript
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 { }
|