Files
cedetec_api_nest/src/app.module.ts
T

149 lines
6.2 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';
import { MulterModule } from '@nestjs/platform-express';
import { ServeStaticModule } from '@nestjs/serve-static';
import { join } from 'path';
import { CarruselModule } from './carrusel/carrusel.module';
import { Carrusel } from './carrusel/entity/carrusel.entity';
import { ComentariosModule } from './comentarios/comentarios.module';
import { Comentarios } from './comentarios/entity/comentarios.entity';
import { AlmacenamientoModule } from './almacenamiento/almacenamiento.module';
import { Almacenamiento } from './almacenamiento/entity/almacenamiento.entity';
import { TylController } from './tyl/tyl.controller';
@Module({
imports: [
ServeStaticModule.forRoot({
rootPath: join(__dirname, '..', 'public'),
exclude: ['/api*'], // Excluir la ruta "/api" de servir archivos estáticos
}),
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'),
synchronize: true,
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,
/* Agregado el 2 de junio */
Carrusel,
/* No recuerdo porque empece a ponerle fechas */
Comentarios,
],
}),
}),
EventosModule,
ParticipanteModule,
EventoParticipanteModule,
AuthModule,
PassportModule,
JwtModule.register({}),
InscripcionDscModule,
InscripcionAreaModule,
InscripcionStatusModule,
PeriodoModule,
InscripcionUsuarioModule,
MiembroModule,
MiembroProyectoModule,
MiembroContactoModule,
ProyectoModule,
ProyectoActividadModule,
ActividadModule,
EmailModule,
ComentariosModule,
MulterModule.register({
dest: './uploads', // directorio de destino para guardar los archivos cargados
}),
CarruselModule,
ComentariosModule,
AlmacenamientoModule,
],
controllers: [
AppController,
InscripcionStatusController,
TylController,
],
providers: [AppService, InscripcionStatusService],
})
export class AppModule {
static port: number;
constructor(private readonly configService: ConfigService) {
console.log('PORT', this.configService.get('PORT'));
AppModule.port = this.configService.get('PORT');
}
}