78 lines
4.0 KiB
TypeScript
78 lines
4.0 KiB
TypeScript
import { Module } from '@nestjs/common';
|
|
import { TypeOrmModule } from '@nestjs/typeorm';
|
|
import { JwtModule } from '@nestjs/jwt';
|
|
import { PassportModule } from '@nestjs/passport';
|
|
import { JwtStrategy } from './infrastructure/strategies/jwt.strategy';
|
|
|
|
// Domain entities
|
|
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';
|
|
|
|
// Domain repository interfaces
|
|
import { USER_REPOSITORY } from './domain/repositories/user.repository.interface';
|
|
import { KYC_REPOSITORY } from './domain/repositories/kyc.repository.interface';
|
|
import { WALLET_REPOSITORY } from './domain/repositories/wallet.repository.interface';
|
|
import { TRANSACTION_REPOSITORY } from './domain/repositories/transaction.repository.interface';
|
|
import { MESSAGE_REPOSITORY } from './domain/repositories/message.repository.interface';
|
|
|
|
// Infrastructure implementations
|
|
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';
|
|
|
|
// Application services
|
|
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';
|
|
|
|
// Interface controllers
|
|
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';
|
|
|
|
@Module({
|
|
imports: [
|
|
TypeOrmModule.forFeature([
|
|
User, KycSubmission, Wallet, Transaction, Message,
|
|
]),
|
|
PassportModule.register({ defaultStrategy: 'jwt' }),
|
|
JwtModule.register({
|
|
secret: process.env.JWT_ACCESS_SECRET || 'dev-access-secret',
|
|
}),
|
|
],
|
|
controllers: [
|
|
UserController, KycController, WalletController, MessageController,
|
|
AdminDashboardController, AdminUserController, AdminSystemController, AdminAnalyticsController,
|
|
],
|
|
providers: [
|
|
JwtStrategy,
|
|
// Infrastructure -> Domain port binding
|
|
{ provide: USER_REPOSITORY, useClass: UserRepository },
|
|
{ provide: KYC_REPOSITORY, useClass: KycRepository },
|
|
{ provide: WALLET_REPOSITORY, useClass: WalletRepository },
|
|
{ provide: TRANSACTION_REPOSITORY, useClass: TransactionRepository },
|
|
{ provide: MESSAGE_REPOSITORY, useClass: MessageRepository },
|
|
|
|
// Application services
|
|
UserProfileService, KycService, WalletService, MessageService,
|
|
AdminDashboardService, AdminUserService, AdminSystemService, AdminAnalyticsService,
|
|
],
|
|
exports: [UserProfileService, WalletService, MessageService],
|
|
})
|
|
export class UserModule {}
|