79 lines
3 KiB
TypeScript
79 lines
3 KiB
TypeScript
import { Module } from '@nestjs/common';
|
|
import { APP_GUARD } from '@nestjs/core';
|
|
import { ConfigModule } from '@nestjs/config';
|
|
import { ThrottlerModule, ThrottlerGuard } from '@nestjs/throttler';
|
|
import { ScheduleModule } from '@nestjs/schedule';
|
|
import { BullModule } from '@nestjs/bullmq';
|
|
import { LoggerModule } from 'nestjs-pino';
|
|
import { HealthController } from './health/health.controller';
|
|
import { AuthModule } from './auth/auth.module';
|
|
import { EventsModule } from './events/events.module';
|
|
import { AgentNichesModule } from './agent-niches/agent-niches.module';
|
|
import { AuditModule } from './audit/audit.module';
|
|
import { OrganizationsModule } from './organizations/organizations.module';
|
|
import { TasksModule } from './tasks/tasks.module';
|
|
import { GoalsModule } from './goals/goals.module';
|
|
import { DecisionsModule } from './decisions/decisions.module';
|
|
import { TransactionsModule } from './transactions/transactions.module';
|
|
import { ObservationsModule } from './observations/observations.module';
|
|
import { OpportunitiesModule } from './opportunities/opportunities.module';
|
|
import { TenantsModule } from './tenants/tenants.module';
|
|
import { NavigationModule } from './navigation/navigation.module';
|
|
import { ProjectionsModule } from './projections/projections.module';
|
|
import { NotificationsModule } from './notifications/notifications.module';
|
|
import { SagasModule } from './sagas/sagas.module';
|
|
import { IntelligenceModule } from './intelligence/intelligence.module';
|
|
import { SegmentsModule } from './segments/segments.module';
|
|
import { ResearchBriefsModule } from './research-briefs/research-briefs.module';
|
|
import { BriefingModule } from './briefing/briefing.module';
|
|
import { SessionGuard } from './auth/session.guard';
|
|
import { TenantGuard } from './auth/tenant.guard';
|
|
|
|
function parseRedisConnection(redisUrl: string | undefined) {
|
|
if (!redisUrl) {
|
|
return { host: 'localhost', port: 6379 };
|
|
}
|
|
const url = new URL(redisUrl);
|
|
return {
|
|
host: url.hostname,
|
|
port: Number(url.port || 6379),
|
|
password: url.password || undefined,
|
|
};
|
|
}
|
|
|
|
@Module({
|
|
imports: [
|
|
ConfigModule.forRoot({ isGlobal: true }),
|
|
LoggerModule.forRoot(),
|
|
ThrottlerModule.forRoot([{ ttl: 60000, limit: 100 }]),
|
|
ScheduleModule.forRoot(),
|
|
BullModule.forRoot({ connection: parseRedisConnection(process.env.REDIS_URL) }),
|
|
AuthModule,
|
|
AuditModule,
|
|
EventsModule,
|
|
AgentNichesModule,
|
|
TenantsModule,
|
|
NavigationModule,
|
|
ProjectionsModule,
|
|
NotificationsModule,
|
|
SagasModule,
|
|
OrganizationsModule,
|
|
TasksModule,
|
|
GoalsModule,
|
|
DecisionsModule,
|
|
TransactionsModule,
|
|
ObservationsModule,
|
|
OpportunitiesModule,
|
|
IntelligenceModule,
|
|
SegmentsModule,
|
|
ResearchBriefsModule,
|
|
BriefingModule,
|
|
],
|
|
controllers: [HealthController],
|
|
providers: [
|
|
{ provide: APP_GUARD, useClass: ThrottlerGuard },
|
|
{ provide: APP_GUARD, useClass: SessionGuard },
|
|
{ provide: APP_GUARD, useClass: TenantGuard },
|
|
],
|
|
})
|
|
export class AppModule {}
|