rwadurian/backend/services/identity-service/src/infrastructure/infrastructure.module.ts

69 lines
2.3 KiB
TypeScript

import { Module, Global } from '@nestjs/common';
import { HttpModule } from '@nestjs/axios';
import { PrismaService } from './persistence/prisma/prisma.service';
import { UserAccountRepositoryImpl } from './persistence/repositories/user-account.repository.impl';
import { MpcKeyShareRepositoryImpl } from './persistence/repositories/mpc-key-share.repository.impl';
import { UserAccountMapper } from './persistence/mappers/user-account.mapper';
import { RedisService } from './redis/redis.service';
import { EventPublisherService } from './kafka/event-publisher.service';
import { SmsService } from './external/sms/sms.service';
import { WalletGeneratorServiceImpl } from './external/blockchain/wallet-generator.service.impl';
import { BlockchainQueryService } from './external/blockchain/blockchain-query.service';
import { MpcClientService, MpcWalletService } from './external/mpc';
import { BackupClientService, MpcShareStorageService } from './external/backup';
import { MPC_KEY_SHARE_REPOSITORY } from '@/domain/repositories/mpc-key-share.repository.interface';
import { WalletGeneratorService } from '@/domain/services/wallet-generator.service';
@Global()
@Module({
imports: [
HttpModule.register({
timeout: 300000,
maxRedirects: 5,
}),
],
providers: [
PrismaService,
UserAccountRepositoryImpl,
{
provide: MPC_KEY_SHARE_REPOSITORY,
useClass: MpcKeyShareRepositoryImpl,
},
UserAccountMapper,
RedisService,
EventPublisherService,
SmsService,
// WalletGeneratorService 抽象类由 WalletGeneratorServiceImpl 实现
WalletGeneratorServiceImpl,
{
provide: WalletGeneratorService,
useExisting: WalletGeneratorServiceImpl,
},
BlockchainQueryService,
MpcClientService,
MpcWalletService,
BackupClientService,
MpcShareStorageService,
],
exports: [
PrismaService,
UserAccountRepositoryImpl,
{
provide: MPC_KEY_SHARE_REPOSITORY,
useClass: MpcKeyShareRepositoryImpl,
},
UserAccountMapper,
RedisService,
EventPublisherService,
SmsService,
WalletGeneratorServiceImpl,
WalletGeneratorService,
BlockchainQueryService,
MpcClientService,
MpcWalletService,
BackupClientService,
MpcShareStorageService,
],
})
export class InfrastructureModule {}