import { Module } from '@nestjs/common'; import { ConfigModule, ConfigService } from '@nestjs/config'; import { JwtModule } from '@nestjs/jwt'; import { PrismaModule } from './infrastructure/database/prisma.module'; import { RedisModule } from './infrastructure/redis/redis.module'; import { QueueModule } from './infrastructure/queue/queue.module'; import { AiModule } from './modules/ai/ai.module'; import { StorageModule } from './infrastructure/storage/storage.module'; import { LoggerModule } from './infrastructure/logger/logger.module'; import { AiAnalysisWorker } from './workers/ai-analysis.worker'; import { DocumentImportWorker } from './workers/document-import.worker'; import { NotificationWorker } from './workers/notification.worker'; import { AiAnalysisModule } from './modules/ai-analysis/ai-analysis.module'; import { DocumentImportModule } from './modules/document-import/document-import.module'; import { KnowledgeItemsModule } from './modules/knowledge-items/knowledge-items.module'; import { NotificationsModule } from './modules/notifications/notifications.module'; import appConfig from './config/app.config'; import databaseConfig from './config/database.config'; import redisConfig from './config/redis.config'; import jwtConfig from './config/jwt.config'; import aiConfig from './config/ai.config'; import storageConfig from './config/storage.config'; import appleConfig from './config/apple.config'; @Module({ imports: [ ConfigModule.forRoot({ isGlobal: true, load: [ appConfig, databaseConfig, redisConfig, jwtConfig, aiConfig, storageConfig, appleConfig, ], }), JwtModule.registerAsync({ global: true, imports: [ConfigModule], inject: [ConfigService], useFactory: (config: ConfigService) => ({ secret: config.get('jwt.secret'), signOptions: { expiresIn: config.get('jwt.expiresIn', '1h') as any }, }), }), PrismaModule, RedisModule, QueueModule, AiModule, StorageModule, LoggerModule, AiAnalysisModule, DocumentImportModule, KnowledgeItemsModule, NotificationsModule, ], providers: [ AiAnalysisWorker, DocumentImportWorker, NotificationWorker, ], }) export class WorkerModule {}