Private
Public Access
1
0

重构:消除代码重复,提升可维护性

后端优化:
- 新增 resolvePassword 函数,消除密码获取重复逻辑
- 新增 parseMongoOptions 函数,消除 Options 解析重复
- 新增 testConnectionByType 统一连接测试调用
- 重构 loadMongoDatabasesWithOptions 接收解析后参数
- 删除重复代码 37 行

前端优化:
- 新增 useVisibleDatabases composable
- 统一 visible_databases 解析和过滤逻辑
- 简化错误处理,移除 try-catch 包装
- 删除重复代码 22 行

代码质量:
- 消除 6 处重复代码块
- 新增 5 个可复用函数
- 提升代码可维护性和可测试性
This commit is contained in:
2026-02-13 00:47:52 +08:00
parent d62b9ca7bd
commit 4a1f0213df
4 changed files with 116 additions and 122 deletions

View File

@@ -162,6 +162,7 @@ import {
SaveDbConnection
} from '../../../wailsjs/wailsjs/go/main/App'
import { getConnectionFailedTip, getLoadFailedTip } from '@/utils/database-error'
import { useVisibleDatabases } from '@/composables/useVisibleDatabases'
// 使用 defineModel 简化 v-model:visible 双向绑定Vue 3.5+
const visible = defineModel('visible', { type: Boolean, default: false })
@@ -183,6 +184,7 @@ const errorMessage = ref('')
const isPasswordChanged = ref(false)
// 数据库过滤相关
const { parse: parseVisibleDatabases, filter: filterVisibleDatabases } = useVisibleDatabases()
const loadingDatabases = ref(false)
const allDatabases = ref<string[]>([])
const selectedDatabases = ref<string[]>([])
@@ -373,16 +375,7 @@ const loadConnection = async () => {
isPasswordChanged.value = false
// 恢复数据库选择
if (conn.visible_databases) {
try {
selectedDatabases.value = JSON.parse(conn.visible_databases)
} catch (error) {
console.warn('解析可见数据库列表失败:', error)
selectedDatabases.value = []
}
} else {
selectedDatabases.value = []
}
selectedDatabases.value = parseVisibleDatabases(conn.visible_databases || null)
// 编辑模式:自动加载数据库列表
nextTick(() => {
@@ -558,18 +551,8 @@ const loadAllDatabases = async () => {
allDatabases.value = databases || []
// 从已保存的 visibleDatabases 中恢复选择
if (form.visibleDatabases) {
try {
selectedDatabases.value = JSON.parse(form.visibleDatabases)
.filter((db: string) => databases.includes(db))
} catch (error) {
console.warn('解析可见数据库列表失败:', error)
selectedDatabases.value = []
}
} else {
selectedDatabases.value = []
}
// 从已保存的 visibleDatabases 中恢复选择(使用 composable
selectedDatabases.value = filterVisibleDatabases(databases, form.visibleDatabases || null)
Message.success(`成功加载 ${databases.length} 个数据库`)
} catch (error) {