Plazo único por Acta, respuestas de empresa con PDF, fecha comprometida, estados administrativos, cola y calendario por Acta.
93 lines
3.6 KiB
TypeScript
93 lines
3.6 KiB
TypeScript
import { Module } from '@nestjs/common';
|
|
import { ConfigModule, ConfigService } from '@nestjs/config';
|
|
import { APP_GUARD } from '@nestjs/core';
|
|
import { ThrottlerGuard, ThrottlerModule } from '@nestjs/throttler';
|
|
import { TypeOrmModule } from '@nestjs/typeorm';
|
|
import { AuditModule } from './audit/audit.module';
|
|
import { AdministrationModule } from './administration/administration.module';
|
|
import { AuthorizationModule } from './authorization/authorization.module';
|
|
import { PermissionsGuard } from './authorization/guards/permissions.guard';
|
|
import { AuthModule } from './auth/auth.module';
|
|
import { AccessTokenGuard } from './auth/guards/access-token.guard';
|
|
import { CsrfGuard } from './auth/guards/csrf.guard';
|
|
import { PhaseADataModule } from './core-data/phase-a-data.module';
|
|
import { HealthController } from './health.controller';
|
|
import { HealthService } from './health.service';
|
|
import { DashboardModule } from './dashboard/dashboard.module';
|
|
import { AssetMasterModule } from './asset-master/asset-master.module';
|
|
import { SurveyPlanningModule } from './survey-planning/survey-planning.module';
|
|
import { SurveyExecutionModule } from './survey-execution/survey-execution.module';
|
|
import { InspectionVisitsModule } from './inspection-visits/inspection-visits.module';
|
|
import { InspectionActsModule } from './inspection-acts/inspection-acts.module';
|
|
import { InspectionFindingsModule } from './inspection-findings/inspection-findings.module';
|
|
import { InspectionClosingModule } from './inspection-closing/inspection-closing.module';
|
|
import { AssetImportsModule } from './asset-imports/asset-imports.module';
|
|
import { InspectionReportsModule } from './inspection-reports/inspection-reports.module';
|
|
import { InspectionVerificationsModule } from './inspection-verifications/inspection-verifications.module';
|
|
import { ActAdministrationModule } from './act-administration/act-administration.module';
|
|
|
|
function required(config: ConfigService, key: string): string {
|
|
const value = config.get<string>(key);
|
|
if (!value) throw new Error(`Missing required environment variable: ${key}`);
|
|
return value;
|
|
}
|
|
|
|
@Module({
|
|
imports: [
|
|
ConfigModule.forRoot({
|
|
isGlobal: true,
|
|
ignoreEnvFile: true,
|
|
}),
|
|
TypeOrmModule.forRootAsync({
|
|
inject: [ConfigService],
|
|
useFactory: (config: ConfigService) => ({
|
|
type: 'postgres',
|
|
host: required(config, 'DB_HOST'),
|
|
port: Number(config.get<string>('DB_PORT') ?? 5432),
|
|
database: required(config, 'DB_NAME'),
|
|
username: required(config, 'DB_APP_USER'),
|
|
password: required(config, 'DB_APP_PASSWORD'),
|
|
autoLoadEntities: true,
|
|
synchronize: false,
|
|
migrationsRun: false,
|
|
logging: false,
|
|
applicationName: 'dhv2-api',
|
|
connectTimeoutMS: 5000,
|
|
}),
|
|
}),
|
|
ThrottlerModule.forRoot([
|
|
{
|
|
name: 'default',
|
|
ttl: 60_000,
|
|
limit: 120,
|
|
},
|
|
]),
|
|
PhaseADataModule,
|
|
AuditModule,
|
|
AuthorizationModule,
|
|
AuthModule,
|
|
AdministrationModule,
|
|
DashboardModule,
|
|
AssetMasterModule,
|
|
SurveyPlanningModule,
|
|
SurveyExecutionModule,
|
|
InspectionVisitsModule,
|
|
InspectionActsModule,
|
|
InspectionFindingsModule,
|
|
InspectionClosingModule,
|
|
InspectionReportsModule,
|
|
InspectionVerificationsModule,
|
|
ActAdministrationModule,
|
|
AssetImportsModule,
|
|
],
|
|
controllers: [HealthController],
|
|
providers: [
|
|
HealthService,
|
|
{ provide: APP_GUARD, useClass: ThrottlerGuard },
|
|
{ provide: APP_GUARD, useClass: AccessTokenGuard },
|
|
{ provide: APP_GUARD, useClass: PermissionsGuard },
|
|
{ provide: APP_GUARD, useClass: CsrfGuard },
|
|
],
|
|
})
|
|
export class AppModule {}
|