import { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; import { ConfigModule, ConfigService } from '@nestjs/config'; import { AppController } from './app.controller'; import { AppService } from './app.service'; import { EventosModule } from './eventos/eventos.module'; import { ParticipanteController } from './participante/participante.controller'; import { ParticipanteModule } from './participante/participante.module'; import { EventoParticipanteModule } from './evento-participante/evento-participante/evento-participante.module'; import { UsuarioModule } from './usuario/usuario.module'; import { AuthModule } from './auth/auth.module'; import { PassportModule } from '@nestjs/passport'; import { JwtModule } from '@nestjs/jwt'; import { Evento } from './eventos/evento.entity'; import { Participante } from './participante/participante.entity'; import { EventoParticipante } from './evento-participante/evento-participante/eventoParticipante.entity'; import { Usuario } from './usuario/usuario.entity'; import { InscripcionDscModule } from './inscripcion-dsc/inscripcion-dsc.module'; import { InscripcionAreaModule } from './inscripcion-area/inscripcion-area.module'; import { InscripcionStatusService } from './inscripcion-status/inscripcion-status.service'; import { InscripcionStatusController } from './inscripcion-status/inscripcion-status.controller'; import { InscripcionStatusModule } from './inscripcion-status/inscripcion-status.module'; import { PeriodoModule } from './periodo/periodo.module'; import { InscripcionUsuarioModule } from './inscripcion-usuario/inscripcion-usuario.module'; import { MiembroModule } from './miembro/miembro.module'; import { Miembro } from './miembro/entity/miembro.entity'; import { InscripcionArea } from './inscripcion-area/entity/inscripcion_area.entity'; import { InscripcionDSC } from './inscripcion-dsc/entity/inscripcion_dsc.entity'; import { InscripcionStatus } from './inscripcion-status/entity/inscripcion_status.entity'; import { InscripcionUsuario } from './inscripcion-usuario/entity/inscripcion_usuario.entity'; import { Area } from './catalogos/area.entity'; import { TipoMiembro } from './catalogos/tipo-miembro.entity'; import { Carrera } from './catalogos/carrera.entity'; import { Periodo } from './periodo/entity/periodo.entity'; @Module({ imports: [ ConfigModule.forRoot({ envFilePath: '.env', isGlobal: true, }), TypeOrmModule.forRootAsync({ imports: [ConfigModule], inject: [ConfigService], useFactory: async (configService: ConfigService) => ({ type: 'mariadb', host: configService.get('DB_HOST'), port: configService.get('DB_PORT'), username: configService.get('DB_USER'), password: configService.get('DB_PASSWORD'), database: configService.get('DB_NAME'), entities: [ Evento, Participante, EventoParticipante, Usuario, Miembro, InscripcionArea, InscripcionDSC, InscripcionStatus, InscripcionUsuario, Area, TipoMiembro, Carrera, Periodo ], synchronize: true, }), }), EventosModule, ParticipanteModule, EventoParticipanteModule, UsuarioModule, AuthModule, PassportModule, JwtModule.register({}), InscripcionDscModule, InscripcionAreaModule, InscripcionStatusModule, PeriodoModule, InscripcionUsuarioModule, MiembroModule, ], controllers: [ AppController, ParticipanteController, InscripcionStatusController, ], providers: [AppService, InscripcionStatusService], }) export class AppModule { static port: number; constructor(private readonly configService: ConfigService) { AppModule.port = this.configService.get('PORT'); } }