重构:消除代码重复,提升可维护性
后端优化: - 新增 resolvePassword 函数,消除密码获取重复逻辑 - 新增 parseMongoOptions 函数,消除 Options 解析重复 - 新增 testConnectionByType 统一连接测试调用 - 重构 loadMongoDatabasesWithOptions 接收解析后参数 - 删除重复代码 37 行 前端优化: - 新增 useVisibleDatabases composable - 统一 visible_databases 解析和过滤逻辑 - 简化错误处理,移除 try-catch 包装 - 删除重复代码 22 行 代码质量: - 消除 6 处重复代码块 - 新增 5 个可复用函数 - 提升代码可维护性和可测试性
This commit is contained in:
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user