Files
cedetec_api_nest/src/app.module.ts
T

123 lines
5.0 KiB
TypeScript

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 { 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 { 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';
import { MiembroProyectoModule } from './miembro-proyecto/miembro-proyecto.module';
import { MiembroContactoModule } from './miembro-contacto/miembro-contacto.module';
import { ProyectoModule } from './proyecto/proyecto.module';
import { ProyectoActividadModule } from './proyecto-actividad/proyecto-actividad.module';
import { ActividadModule } from './actividad/actividad.module';
import { MiembroProyecto } from './miembro-proyecto/entity/miembro_proyecto.entity';
import { MiembroContacto } from './miembro-contacto/entity/miembro_contacto.entity';
import { Proyecto } from './proyecto/entity/proyecto.entity';
import { Contacto } from './contacto/entity/contacto.entity';
import { Equipo } from './equipo/entity/equipo.entity';
import { EquipoEvento } from './equipo-evento/entity/equipo_evento.entity';
import { EquipoMiembro } from './equipo-miembro/entity/equipo_miembro.entity';
import { EmailService } from './email/email.service';
import { EmailController } from './email/email.controller';
import { EmailModule } from './email/email.module';
@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,
/* Agregadas el 29 de febrero */
Miembro,
InscripcionArea,
InscripcionDSC,
InscripcionStatus,
InscripcionUsuario,
Area,
TipoMiembro,
Carrera,
Periodo,
/* Agregadas el 1 de marzo */
MiembroProyecto,
MiembroContacto,
Proyecto,
Contacto,
Equipo,
EquipoEvento,
EquipoMiembro,
],
synchronize: true,
}),
}),
EventosModule,
ParticipanteModule,
EventoParticipanteModule,
AuthModule,
PassportModule,
JwtModule.register({}),
InscripcionDscModule,
InscripcionAreaModule,
InscripcionStatusModule,
PeriodoModule,
InscripcionUsuarioModule,
MiembroModule,
MiembroProyectoModule,
MiembroContactoModule,
ProyectoModule,
ProyectoActividadModule,
ActividadModule,
EmailModule,
],
controllers: [
AppController,
ParticipanteController,
InscripcionStatusController,
],
providers: [AppService, InscripcionStatusService],
})
export class AppModule {
static port: number;
constructor(private readonly configService: ConfigService) {
AppModule.port = this.configService.get('PORT');
}
}