refactor: 统一使用 mergeMap 函数提升代码一致性
根据 Gemini CLI 代码审查建议: ## 修改内容 - 将 Gemini OAuth 同步中的 `mergeJSONB` 调用替换为 `mergeMap` - 删除不再使用的 `mergeJSONB` 函数定义 ## 原因 - 其他平台(OpenAI、Anthropic)的账户同步都使用 `mergeMap` - `mergeJSONB` 是为旧的 `model.JSONB` 类型设计,与重构后的架构不一致 - 统一函数命名提高代码可读性和可维护性 ## 影响范围 - backend/internal/service/crs_sync_service.go (4处替换) - backend/internal/service/account.go (删除 mergeJSONB 函数) ## 验证 ✓ 编译通过 ✓ 功能逻辑无变化(mergeMap 和 mergeJSONB 实现相同)
This commit is contained in:
@@ -326,17 +326,3 @@ func (a *Account) IsOpenAITokenExpired() bool {
|
|||||||
}
|
}
|
||||||
return time.Now().Add(60 * time.Second).After(*expiresAt)
|
return time.Now().Add(60 * time.Second).After(*expiresAt)
|
||||||
}
|
}
|
||||||
|
|
||||||
// mergeJSONB merges source map into target map (for preserving extra fields during account sync)
|
|
||||||
func mergeJSONB(target, source map[string]any) map[string]any {
|
|
||||||
if target == nil {
|
|
||||||
target = make(map[string]any)
|
|
||||||
}
|
|
||||||
if source == nil {
|
|
||||||
return target
|
|
||||||
}
|
|
||||||
for k, v := range source {
|
|
||||||
target[k] = v
|
|
||||||
}
|
|
||||||
return target
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -801,11 +801,11 @@ func (s *CRSSyncService) SyncFromCRS(ctx context.Context, input SyncFromCRSInput
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
existing.Extra = mergeJSONB(existing.Extra, extra)
|
existing.Extra = mergeMap(existing.Extra, extra)
|
||||||
existing.Name = defaultName(src.Name, src.ID)
|
existing.Name = defaultName(src.Name, src.ID)
|
||||||
existing.Platform = PlatformGemini
|
existing.Platform = PlatformGemini
|
||||||
existing.Type = AccountTypeOAuth
|
existing.Type = AccountTypeOAuth
|
||||||
existing.Credentials = mergeJSONB(existing.Credentials, credentials)
|
existing.Credentials = mergeMap(existing.Credentials, credentials)
|
||||||
if proxyID != nil {
|
if proxyID != nil {
|
||||||
existing.ProxyID = proxyID
|
existing.ProxyID = proxyID
|
||||||
}
|
}
|
||||||
@@ -908,11 +908,11 @@ func (s *CRSSyncService) SyncFromCRS(ctx context.Context, input SyncFromCRSInput
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
existing.Extra = mergeJSONB(existing.Extra, extra)
|
existing.Extra = mergeMap(existing.Extra, extra)
|
||||||
existing.Name = defaultName(src.Name, src.ID)
|
existing.Name = defaultName(src.Name, src.ID)
|
||||||
existing.Platform = PlatformGemini
|
existing.Platform = PlatformGemini
|
||||||
existing.Type = AccountTypeApiKey
|
existing.Type = AccountTypeApiKey
|
||||||
existing.Credentials = mergeJSONB(existing.Credentials, credentials)
|
existing.Credentials = mergeMap(existing.Credentials, credentials)
|
||||||
if proxyID != nil {
|
if proxyID != nil {
|
||||||
existing.ProxyID = proxyID
|
existing.ProxyID = proxyID
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user