import { Module } from '@nestjs/common'; import { APP_GUARD } from '@nestjs/core'; import { TypeOrmModule } from '@nestjs/typeorm'; import { IntelReport } from './entities/intel-report.entity'; import { InitialSchema1700000000000 } from './migrations/1700000000000-InitialSchema'; import { ServiceApiKeyGuard } from './guards/service-api-key.guard'; import { RedisService } from './services/redis.service'; import { IntelReportService } from './services/intel-report.service'; import { SafetyScoreService } from './services/safety-score.service'; import { IntelReportController } from './controllers/intel-report.controller'; import { ClientIntelController } from './controllers/client-intel.controller'; import { SafetyDashboardController } from './controllers/safety-dashboard.controller'; import { HealthController } from './health.controller'; @Module({ imports: [ TypeOrmModule.forRoot({ type: 'postgres', host: process.env['DATABASE_HOST'] ?? 'localhost', port: parseInt(process.env['DATABASE_PORT'] ?? '25433', 10), username: process.env['DATABASE_USER'] ?? 'postgres', password: process.env['DATABASE_PASSWORD'] ?? 'devpassword', database: process.env['DATABASE_NAME'] ?? 'lilith_client_intel', entities: [IntelReport], migrations: [InitialSchema1700000000000], migrationsRun: true, synchronize: false, logging: process.env['NODE_ENV'] !== 'production', }), TypeOrmModule.forFeature([IntelReport]), ], controllers: [ IntelReportController, ClientIntelController, SafetyDashboardController, HealthController, ], providers: [ { provide: APP_GUARD, useClass: ServiceApiKeyGuard, }, { provide: 'PROVIDER_ID', useValue: process.env['PROVIDER_ID'] ?? '00000000-0000-0000-0000-000000000001', }, RedisService, IntelReportService, SafetyScoreService, ], }) export class AppModule {}