forked from datawhale/whale-town-end
- 将技术实现服务从business层迁移到core层 - 创建src/core/zulip/核心服务模块,包含API客户端、连接池等技术服务 - 保留src/business/zulip/业务逻辑,专注游戏相关的业务规则 - 通过依赖注入实现业务层与核心层的解耦 - 更新模块导入关系,确保架构分层清晰 重构后的架构符合单一职责原则,提高了代码的可维护性和可测试性
68 lines
1.8 KiB
TypeScript
68 lines
1.8 KiB
TypeScript
/**
|
|
* Zulip核心服务模块
|
|
*
|
|
* 功能描述:
|
|
* - 提供Zulip技术实现相关的核心服务
|
|
* - 封装第三方API调用和技术细节
|
|
* - 为业务层提供抽象接口
|
|
*
|
|
* @author angjustinl
|
|
* @version 1.0.0
|
|
* @since 2025-12-31
|
|
*/
|
|
|
|
import { Module } from '@nestjs/common';
|
|
import { ZulipClientService } from './services/zulip_client.service';
|
|
import { ZulipClientPoolService } from './services/zulip_client_pool.service';
|
|
import { ConfigManagerService } from './services/config_manager.service';
|
|
import { ApiKeySecurityService } from './services/api_key_security.service';
|
|
import { ErrorHandlerService } from './services/error_handler.service';
|
|
import { MonitoringService } from './services/monitoring.service';
|
|
import { StreamInitializerService } from './services/stream_initializer.service';
|
|
import { RedisModule } from '../redis/redis.module';
|
|
|
|
@Module({
|
|
imports: [
|
|
// Redis模块 - ApiKeySecurityService需要REDIS_SERVICE
|
|
RedisModule,
|
|
],
|
|
providers: [
|
|
// 核心客户端服务
|
|
{
|
|
provide: 'ZULIP_CLIENT_SERVICE',
|
|
useClass: ZulipClientService,
|
|
},
|
|
{
|
|
provide: 'ZULIP_CLIENT_POOL_SERVICE',
|
|
useClass: ZulipClientPoolService,
|
|
},
|
|
{
|
|
provide: 'ZULIP_CONFIG_SERVICE',
|
|
useClass: ConfigManagerService,
|
|
},
|
|
|
|
// 辅助服务
|
|
ApiKeySecurityService,
|
|
ErrorHandlerService,
|
|
MonitoringService,
|
|
StreamInitializerService,
|
|
|
|
// 直接提供类(用于内部依赖)
|
|
ZulipClientService,
|
|
ZulipClientPoolService,
|
|
ConfigManagerService,
|
|
],
|
|
exports: [
|
|
// 导出接口标识符供业务层使用
|
|
'ZULIP_CLIENT_SERVICE',
|
|
'ZULIP_CLIENT_POOL_SERVICE',
|
|
'ZULIP_CONFIG_SERVICE',
|
|
|
|
// 导出辅助服务
|
|
ApiKeySecurityService,
|
|
ErrorHandlerService,
|
|
MonitoringService,
|
|
StreamInitializerService,
|
|
],
|
|
})
|
|
export class ZulipCoreModule {} |