mirror of
https://github.com/Syngnat/GoNavi.git
synced 2026-05-06 20:03:05 +08:00
* feat(mongodb-driver,connection-tree): 支持 MongoDB v1/v2 切换并新增复制连接 * fix(mongodb-query): 修复 MongoDB 筛选不生效并兼容 shell 语法执行 refs #153 * fix(query-editor): 修复 SQLServer 自动补全回车重复 dbo 前缀 refs #159 * fix(sqlserver-table-designer): 修复设计表读取列时错误使用 schema 作为数据库名 refs #156 * feat(shortcuts): 增加快捷键设置并支持 SQL 执行/侧边栏搜索 refs #158 * fix(sidebar-search): 优化范围搜索匹配与交互 refs #158 * fix(filter,connection-recovery): 保持筛选状态并修复连接失效卡死 refs #165 同步修复连接失效后侧栏持续转圈、断开后无法恢复的问题 * feat(table-designer): 统一设计表界面风格并优化字段新增交互 - 统一设计表页面与数据面板的视觉风格,覆盖工具栏、Tabs、表格与编辑区域 - 移除默认硬边框,改为透明背景与细分隔线,提升整体观感一致性 - 添加字段后自动滚动到新行并高亮,且自动聚焦输入框 - 新增" 在选中字段后添加\,支持按选中字段位置插入字段 * feat(data-grid-filter): 筛选字段支持快捷搜索 - 在筛选条件字段下拉启用可搜索(showSearch) - 支持字段名大小写不敏感模糊匹配 - 表字段较多时可快速定位目标字段,减少下拉查找耗时 refs #171 * fix(db-ssl): 支持多数据源 SSL/TLS 连接并补齐达梦证书配置 refs #167 * fix(sidebar): 修复数据库加载时 null.map 导致表加载失败 * fix(query-editor): 合并运行按钮并保留 SQL 停止执行入口
67 lines
2.1 KiB
Go
67 lines
2.1 KiB
Go
package app
|
||
|
||
import (
|
||
"strings"
|
||
|
||
"GoNavi-Wails/internal/connection"
|
||
)
|
||
|
||
func normalizeRunConfig(config connection.ConnectionConfig, dbName string) connection.ConnectionConfig {
|
||
runConfig := config
|
||
name := strings.TrimSpace(dbName)
|
||
if name == "" {
|
||
return runConfig
|
||
}
|
||
|
||
switch strings.ToLower(strings.TrimSpace(config.Type)) {
|
||
case "mysql", "mariadb", "diros", "sphinx", "postgres", "kingbase", "highgo", "vastbase", "sqlserver", "mongodb", "tdengine", "clickhouse":
|
||
// 这些类型的 dbName 表示"数据库",需要写入连接配置以选择目标库。
|
||
runConfig.Database = name
|
||
case "dameng":
|
||
// 达梦使用 schema 参数,沿用现有行为:dbName 表示 schema。
|
||
runConfig.Database = name
|
||
default:
|
||
// oracle: dbName 表示 schema/owner,不能覆盖 config.Database(服务名)
|
||
// sqlite: 无需设置 Database
|
||
// custom: 语义不明确,避免污染缓存 key
|
||
}
|
||
|
||
return runConfig
|
||
}
|
||
|
||
func normalizeSchemaAndTable(config connection.ConnectionConfig, dbName string, tableName string) (string, string) {
|
||
rawTable := strings.TrimSpace(tableName)
|
||
rawDB := strings.TrimSpace(dbName)
|
||
if rawTable == "" {
|
||
return rawDB, rawTable
|
||
}
|
||
|
||
dbType := strings.ToLower(strings.TrimSpace(config.Type))
|
||
if dbType == "sqlserver" {
|
||
// SQL Server 的 DB 接口约定:第一个参数是数据库名,schema 由 tableName(如 dbo.users) 自行解析。
|
||
// 不能把 schema(dbo) 传到第一个参数,否则会拼出 dbo.sys.columns 等无效对象名。
|
||
targetDB := rawDB
|
||
if targetDB == "" {
|
||
targetDB = strings.TrimSpace(config.Database)
|
||
}
|
||
return targetDB, rawTable
|
||
}
|
||
|
||
if parts := strings.SplitN(rawTable, ".", 2); len(parts) == 2 {
|
||
schema := strings.TrimSpace(parts[0])
|
||
table := strings.TrimSpace(parts[1])
|
||
if schema != "" && table != "" {
|
||
return schema, table
|
||
}
|
||
}
|
||
|
||
switch dbType {
|
||
case "postgres", "kingbase", "highgo", "vastbase":
|
||
// PG/金仓/瀚高/海量:dbName 在 UI 里是"数据库",schema 需从 tableName 或使用默认 public。
|
||
return "public", rawTable
|
||
default:
|
||
// MySQL:dbName 表示数据库;Oracle/达梦:dbName 表示 schema/owner。
|
||
return rawDB, rawTable
|
||
}
|
||
}
|