gcx/backend/services/user-service/src/user.module.ts

86 lines
4.9 KiB
TypeScript

import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { JwtModule } from '@nestjs/jwt';
import { PassportModule } from '@nestjs/passport';
import { ScheduleModule } from '@nestjs/schedule';
import { User } from './domain/entities/user.entity';
import { KycSubmission } from './domain/entities/kyc-submission.entity';
import { Wallet } from './domain/entities/wallet.entity';
import { Transaction } from './domain/entities/transaction.entity';
import { Message } from './domain/entities/message.entity';
import { AppVersion } from './domain/entities/app-version.entity';
import { TelemetryEvent } from './domain/entities/telemetry-event.entity';
import { OnlineSnapshot } from './domain/entities/online-snapshot.entity';
import { DailyActiveStats } from './domain/entities/daily-active-stats.entity';
import { UserRepository } from './infrastructure/persistence/user.repository';
import { KycRepository } from './infrastructure/persistence/kyc.repository';
import { WalletRepository } from './infrastructure/persistence/wallet.repository';
import { TransactionRepository } from './infrastructure/persistence/transaction.repository';
import { MessageRepository } from './infrastructure/persistence/message.repository';
import { PresenceRedisService } from './infrastructure/redis/presence-redis.service';
import { TelemetryMetricsService } from './infrastructure/metrics/telemetry-metrics.service';
import { TelemetryProducerService } from './infrastructure/kafka/telemetry-producer.service';
import { PackageParserService } from './infrastructure/parsers/package-parser.service';
import { UserProfileService } from './application/services/user-profile.service';
import { KycService } from './application/services/kyc.service';
import { WalletService } from './application/services/wallet.service';
import { MessageService } from './application/services/message.service';
import { AdminDashboardService } from './application/services/admin-dashboard.service';
import { AdminUserService } from './application/services/admin-user.service';
import { AdminSystemService } from './application/services/admin-system.service';
import { AdminAnalyticsService } from './application/services/admin-analytics.service';
import { TelemetryService } from './application/services/telemetry.service';
import { TelemetrySchedulerService } from './application/services/telemetry-scheduler.service';
import { AppVersionService } from './application/services/app-version.service';
import { FileStorageService } from './application/services/file-storage.service';
import { UserController } from './interface/http/controllers/user.controller';
import { KycController } from './interface/http/controllers/kyc.controller';
import { WalletController } from './interface/http/controllers/wallet.controller';
import { MessageController } from './interface/http/controllers/message.controller';
import { AdminDashboardController } from './interface/http/controllers/admin-dashboard.controller';
import { AdminUserController } from './interface/http/controllers/admin-user.controller';
import { AdminSystemController } from './interface/http/controllers/admin-system.controller';
import { AdminAnalyticsController } from './interface/http/controllers/admin-analytics.controller';
import { TelemetryController } from './interface/http/controllers/telemetry.controller';
import { AdminTelemetryController } from './interface/http/controllers/admin-telemetry.controller';
import { AppVersionController } from './interface/http/controllers/app-version.controller';
import { AdminVersionController } from './interface/http/controllers/admin-version.controller';
import { MetricsController } from './interface/http/controllers/metrics.controller';
@Module({
imports: [
TypeOrmModule.forFeature([
User, KycSubmission, Wallet, Transaction, Message, AppVersion,
TelemetryEvent, OnlineSnapshot, DailyActiveStats,
]),
PassportModule.register({ defaultStrategy: 'jwt' }),
JwtModule.register({
secret: process.env.JWT_ACCESS_SECRET || 'dev-access-secret',
}),
ScheduleModule.forRoot(),
],
controllers: [
UserController, KycController, WalletController, MessageController,
AdminDashboardController, AdminUserController, AdminSystemController, AdminAnalyticsController,
TelemetryController, AdminTelemetryController,
AppVersionController, AdminVersionController,
MetricsController,
],
providers: [
UserRepository, KycRepository, WalletRepository, TransactionRepository, MessageRepository,
PresenceRedisService,
UserProfileService, KycService, WalletService, MessageService,
AdminDashboardService, AdminUserService, AdminSystemService, AdminAnalyticsService,
TelemetryService, TelemetrySchedulerService,
AppVersionService, FileStorageService, PackageParserService,
TelemetryMetricsService, TelemetryProducerService,
],
exports: [UserProfileService, WalletService, MessageService],
})
export class UserModule {}