2025-12-18 23:05:04 +05:30
|
|
|
import { Module } from '@nestjs/common';
|
|
|
|
|
import { ConfigModule } from '@nestjs/config';
|
|
|
|
|
import { ThrottlerModule, ThrottlerGuard } from '@nestjs/throttler';
|
|
|
|
|
import { APP_GUARD } from '@nestjs/core';
|
|
|
|
|
import { ScheduleModule } from '@nestjs/schedule';
|
|
|
|
|
import { EventEmitterModule } from '@nestjs/event-emitter';
|
|
|
|
|
|
|
|
|
|
import { configuration } from './config';
|
|
|
|
|
import { PrismaModule } from './prisma';
|
2025-12-20 19:22:30 +05:30
|
|
|
import { AuthModule, JwtAuthGuard, RolesGuard } from './auth';
|
|
|
|
|
import { UsersModule } from './users';
|
2025-12-22 11:57:16 +05:30
|
|
|
import { EmailModule } from './email';
|
2026-01-20 12:16:01 +05:30
|
|
|
import { AgentTypesModule } from './agent-types';
|
2026-01-11 20:59:12 +05:30
|
|
|
import { AgentsModule } from './agents';
|
|
|
|
|
import { UploadModule } from './upload';
|
2026-01-24 03:33:54 +05:30
|
|
|
import { ProfileFieldsModule } from './profile-fields';
|
2026-02-02 09:59:25 +05:30
|
|
|
import { ConnectionRequestsModule } from './connection-requests';
|
2026-02-08 22:44:16 +05:30
|
|
|
import { MessagesModule } from './messages';
|
2026-02-22 21:52:16 +05:30
|
|
|
import { CmsModule } from './cms';
|
2026-02-24 22:36:42 +05:30
|
|
|
import { NotificationsModule } from './notifications';
|
2025-12-18 23:05:04 +05:30
|
|
|
import { AppController } from './app.controller';
|
|
|
|
|
import { AppService } from './app.service';
|
|
|
|
|
|
|
|
|
|
@Module({
|
|
|
|
|
imports: [
|
|
|
|
|
// Configuration
|
|
|
|
|
ConfigModule.forRoot({
|
|
|
|
|
isGlobal: true,
|
|
|
|
|
load: [configuration],
|
|
|
|
|
envFilePath: ['.env.local', '.env'],
|
|
|
|
|
}),
|
|
|
|
|
|
|
|
|
|
// Rate Limiting
|
|
|
|
|
ThrottlerModule.forRoot([
|
|
|
|
|
{
|
|
|
|
|
ttl: 60000, // 60 seconds
|
|
|
|
|
limit: 100, // 100 requests per minute
|
|
|
|
|
},
|
|
|
|
|
]),
|
|
|
|
|
|
|
|
|
|
// Task Scheduling
|
|
|
|
|
ScheduleModule.forRoot(),
|
|
|
|
|
|
|
|
|
|
// Event Emitter
|
|
|
|
|
EventEmitterModule.forRoot(),
|
|
|
|
|
|
|
|
|
|
// Database
|
|
|
|
|
PrismaModule,
|
|
|
|
|
|
2025-12-20 19:22:30 +05:30
|
|
|
// Feature Modules
|
|
|
|
|
AuthModule,
|
|
|
|
|
UsersModule,
|
2025-12-22 11:57:16 +05:30
|
|
|
EmailModule,
|
2026-01-20 12:16:01 +05:30
|
|
|
AgentTypesModule,
|
2026-01-11 20:59:12 +05:30
|
|
|
AgentsModule,
|
|
|
|
|
UploadModule,
|
2026-01-24 03:33:54 +05:30
|
|
|
ProfileFieldsModule,
|
2026-02-02 09:59:25 +05:30
|
|
|
ConnectionRequestsModule,
|
2026-02-08 22:44:16 +05:30
|
|
|
MessagesModule,
|
2026-02-22 21:52:16 +05:30
|
|
|
CmsModule,
|
2026-02-24 22:36:42 +05:30
|
|
|
NotificationsModule,
|
2025-12-18 23:05:04 +05:30
|
|
|
],
|
|
|
|
|
controllers: [AppController],
|
|
|
|
|
providers: [
|
|
|
|
|
AppService,
|
|
|
|
|
// Global Rate Limiting Guard
|
|
|
|
|
{
|
|
|
|
|
provide: APP_GUARD,
|
|
|
|
|
useClass: ThrottlerGuard,
|
|
|
|
|
},
|
2025-12-20 19:22:30 +05:30
|
|
|
// Global JWT Auth Guard
|
|
|
|
|
{
|
|
|
|
|
provide: APP_GUARD,
|
|
|
|
|
useClass: JwtAuthGuard,
|
|
|
|
|
},
|
|
|
|
|
// Global Roles Guard
|
|
|
|
|
{
|
|
|
|
|
provide: APP_GUARD,
|
|
|
|
|
useClass: RolesGuard,
|
|
|
|
|
},
|
2025-12-18 23:05:04 +05:30
|
|
|
],
|
|
|
|
|
})
|
|
|
|
|
export class AppModule {}
|