重构:文件系统模块化架构,优化应用启动流程
This commit is contained in:
1285
docs/04-功能迭代/GO-DESK-2.数据库客户端/设计文档/需求设计/前端布局样式系统设计.md
Normal file
1285
docs/04-功能迭代/GO-DESK-2.数据库客户端/设计文档/需求设计/前端布局样式系统设计.md
Normal file
File diff suppressed because it is too large
Load Diff
429
docs/04-功能迭代/GO-DESK-2.数据库客户端/设计文档/需求设计/数据库类型功能差异分析.md
Normal file
429
docs/04-功能迭代/GO-DESK-2.数据库客户端/设计文档/需求设计/数据库类型功能差异分析.md
Normal file
@@ -0,0 +1,429 @@
|
||||
# 数据库类型功能差异分析
|
||||
|
||||
**分析日期**:2025-01-28
|
||||
**分析范围**:MySQL、Redis、MongoDB 功能支持差异
|
||||
|
||||
---
|
||||
|
||||
## 一、功能支持对比表
|
||||
|
||||
| 功能模块 | MySQL | Redis | MongoDB | 说明 |
|
||||
|---------|-------|-------|---------|------|
|
||||
| **连接管理** |
|
||||
| 连接配置 | ✅ | ✅ | ✅ | 都支持主机、端口、用户名、密码;MySQL默认端口3306/用户root,Redis默认端口6379/DB0,MongoDB默认端口27017/用户admin |
|
||||
| 数据库选择 | ✅ | ✅ | ✅ | MySQL/MongoDB=数据库名,Redis=DB编号(0-15);连接树中Redis显示为"DB 0"、"DB 1"等,支持切换 |
|
||||
| 连接测试 | ✅ | ✅ | ✅ | 都支持连接测试 |
|
||||
| **SQL/命令执行** |
|
||||
| 查询执行 | ✅ | ✅ | ✅ | MySQL=SELECT,Redis=GET等,MongoDB=find |
|
||||
| 更新执行 | ✅ | ✅ | ✅ | MySQL=INSERT/UPDATE/DELETE,Redis=SET等,MongoDB=insert/update |
|
||||
| 结果类型 | query/update | command | query/update | MySQL区分查询/更新,Redis统一为command |
|
||||
| 执行超时 | 30秒 | 30秒 | 30秒 | 统一超时时间 |
|
||||
| **数据库列表** |
|
||||
| 获取数据库列表 | ✅ | ⚠️ | ✅ | Redis返回0-15,MySQL/MongoDB动态查询 |
|
||||
| 数据库切换 | ✅ | ✅ | ✅ | 都支持切换数据库 |
|
||||
| **表/集合/Key列表** |
|
||||
| 获取表列表 | ✅ | ✅ | ✅ | MySQL=表,Redis=Key,MongoDB=集合 |
|
||||
| 懒加载 | ✅ | ✅ | ✅ | 都支持懒加载 |
|
||||
| 模式匹配 | ❌ | ✅ | ❌ | Redis支持Key模式匹配 |
|
||||
| **表结构查询** |
|
||||
| 表结构查询 | ✅ | ✅ | ✅ | MySQL=列信息,Redis=Key信息,MongoDB=集合结构 |
|
||||
| 列信息 | ✅ | ❌ | ⚠️ | MySQL显示列详情,MongoDB显示字段统计 |
|
||||
| 索引信息 | ✅ | ❌ | ✅ | MySQL/MongoDB支持,Redis不支持 |
|
||||
| 文档示例 | ❌ | ❌ | ✅ | 仅MongoDB显示文档示例 |
|
||||
| **索引查询** |
|
||||
| 索引列表 | ✅ | ❌ | ⚠️ | MySQL独立查询,MongoDB包含在集合结构中 |
|
||||
| 索引详情 | ✅ | ❌ | ✅ | MySQL/MongoDB显示索引详情 |
|
||||
| **编辑器支持** |
|
||||
| 语法高亮 | SQL | JavaScript | JavaScript | MySQL使用SQL,Redis/MongoDB使用JS |
|
||||
| 默认内容 | `select 1;` | `GET key\nSET key value` | `db.collection.find({})` | 根据类型自动设置 |
|
||||
| 执行按钮文本 | "执行" | "执行命令" | "执行查询" | 根据类型自动设置 |
|
||||
| **结果展示** |
|
||||
| 表格展示 | ✅ | ⚠️ | ⚠️ | MySQL适合表格,Redis/MongoDB适合JSON |
|
||||
| JSON展示 | ⚠️ | ✅ | ✅ | Redis/MongoDB命令结果用JSON展示 |
|
||||
| 统计信息 | ✅ | ✅ | ✅ | 都显示执行时间和影响行数 |
|
||||
| **数据存储** |
|
||||
| SQL编辑器内容关联 | ✅ | ✅ | ✅ | 都支持SQL编辑器内容关联连接ID |
|
||||
| ~~标签页关联~~ | ⚠️ | ⚠️ | ⚠️ | ~~暂时移除多Tab支持,仅保留一个编辑区~~ |
|
||||
| ~~书签支持~~ | ❌ | ❌ | ❌ | ~~功能已删除~~ |
|
||||
| ~~模板支持~~ | ❌ | ❌ | ❌ | ~~功能已删除~~ |
|
||||
|
||||
**图例**:
|
||||
- ✅ 完全支持
|
||||
- ⚠️ 部分支持或需要特殊处理
|
||||
- ❌ 不支持
|
||||
|
||||
---
|
||||
|
||||
## 快速对比摘要
|
||||
|
||||
### 核心差异
|
||||
| 维度 | MySQL | Redis | MongoDB |
|
||||
|------|-------|-------|---------|
|
||||
| **执行方式** | SQL语句 | 命令字符串 | JSON格式命令 |
|
||||
| **数据结构** | 关系型表格 | 键值对 | 文档型JSON |
|
||||
| **数据库概念** | 逻辑数据库 | DB编号(0-15) | 逻辑数据库 |
|
||||
| **查询方式** | SQL查询 | 命令查询 | JSON命令 |
|
||||
| **结果格式** | 表格数据 | 命令返回值 | 文档数组 |
|
||||
| **语法高亮** | SQL | JavaScript | JavaScript |
|
||||
| **结果展示** | 表格为主 | JSON为主 | JSON为主 |
|
||||
|
||||
### 功能完整性
|
||||
- **MySQL**:⭐⭐⭐⭐⭐ (100%) - 功能最完整
|
||||
- **Redis**:⭐⭐⭐⭐☆ (90%) - 核心功能完整,索引不支持(Redis特性)
|
||||
- **MongoDB**:⭐⭐⭐⭐☆ (85%) - 核心功能完整,需要JSON格式(待优化)
|
||||
|
||||
---
|
||||
|
||||
## 二、详细功能差异分析
|
||||
|
||||
### 2.1 连接管理差异
|
||||
|
||||
#### MySQL
|
||||
- **连接参数**:主机、端口、用户名、密码、数据库名
|
||||
- **数据库选择**:通过数据库名选择,支持切换
|
||||
- **连接方式**:TCP连接,支持SSL(待实现)
|
||||
- **连接池**:支持连接复用
|
||||
|
||||
#### Redis
|
||||
- **连接参数**:主机、端口、密码、DB编号(0-15)
|
||||
- **数据库选择**:通过DB编号选择(0-15),共16个数据库
|
||||
- **连接方式**:TCP连接
|
||||
- **连接池**:支持连接复用
|
||||
- **特殊说明**:database字段存储DB编号(字符串格式)
|
||||
|
||||
#### MongoDB
|
||||
- **连接参数**:主机、端口、用户名、密码、数据库名(认证数据库)
|
||||
- **数据库选择**:通过数据库名选择,支持切换
|
||||
- **连接方式**:TCP连接,支持认证
|
||||
- **连接池**:支持连接复用
|
||||
- **特殊说明**:数据库名可作为认证数据库(authSource)
|
||||
|
||||
---
|
||||
|
||||
### 2.2 SQL/命令执行差异
|
||||
|
||||
#### MySQL
|
||||
- **执行方式**:标准SQL语句
|
||||
- **语句类型**:
|
||||
- 查询:SELECT、SHOW、DESCRIBE、DESC、EXPLAIN
|
||||
- 更新:INSERT、UPDATE、DELETE、CREATE、ALTER、DROP等
|
||||
- **结果类型**:
|
||||
- `query`:查询结果,返回数据数组
|
||||
- `update`:更新结果,返回影响行数
|
||||
- **数据库参数**:支持指定数据库执行(覆盖连接配置)
|
||||
- **多语句支持**:支持多条SQL语句(multiStatements)
|
||||
|
||||
#### Redis
|
||||
- **执行方式**:Redis命令(字符串解析)
|
||||
- **命令格式**:`命令名 参数1 参数2 ...`(支持引号)
|
||||
- **命令类型**:所有Redis命令(GET、SET、HGET、HSET、DEL等)
|
||||
- **结果类型**:
|
||||
- `command`:统一为命令结果,返回命令返回值
|
||||
- **数据库参数**:不支持(使用连接配置的DB编号)
|
||||
- **命令解析**:支持带引号的参数(单引号/双引号)
|
||||
|
||||
#### MongoDB
|
||||
- **执行方式**:JSON格式命令(当前实现)
|
||||
- **命令格式**:JSON对象,包含 `op`(操作类型)和操作参数
|
||||
- **语句类型**:
|
||||
- 查询:`{"op": "find", "collection": "users", "filter": {}}`
|
||||
- 更新:`{"op": "insertOne", "collection": "users", "document": {}}`
|
||||
- **结果类型**:
|
||||
- `command`:统一为命令结果,根据操作类型确定影响行数
|
||||
- **数据库参数**:支持指定数据库执行(覆盖连接配置)
|
||||
- **特殊说明**:当前使用JSON格式,前端编辑器显示JavaScript语法(MongoDB Shell风格),但实际执行需要转换为JSON格式
|
||||
|
||||
---
|
||||
|
||||
### 2.3 数据库列表差异
|
||||
|
||||
#### MySQL
|
||||
- **获取方式**:`SHOW DATABASES`
|
||||
- **返回结果**:数据库名称数组
|
||||
- **动态查询**:实时查询服务器上的数据库
|
||||
- **权限控制**:根据用户权限显示可见数据库
|
||||
|
||||
#### Redis
|
||||
- **获取方式**:固定返回0-15
|
||||
- **返回结果**:`["0", "1", "2", ..., "15"]`
|
||||
- **特殊说明**:Redis有16个逻辑数据库,编号0-15
|
||||
- **实现方式**:不查询服务器,直接返回固定列表
|
||||
|
||||
#### MongoDB
|
||||
- **获取方式**:`client.ListDatabases()`
|
||||
- **返回结果**:数据库名称数组
|
||||
- **动态查询**:实时查询服务器上的数据库
|
||||
- **权限控制**:根据用户权限显示可见数据库
|
||||
|
||||
---
|
||||
|
||||
### 2.4 表/集合/Key列表差异
|
||||
|
||||
#### MySQL
|
||||
- **获取方式**:`SHOW TABLES`
|
||||
- **返回结果**:表名数组
|
||||
- **数据库参数**:必须指定数据库
|
||||
- **懒加载**:展开数据库节点时加载
|
||||
|
||||
#### Redis
|
||||
- **获取方式**:`KEYS *` 或模式匹配
|
||||
- **返回结果**:Key名数组
|
||||
- **数据库参数**:使用连接配置的DB编号
|
||||
- **模式匹配**:支持 `KEYS pattern`(如 `KEYS user:*`)
|
||||
- **性能注意**:大量Key时可能较慢
|
||||
|
||||
#### MongoDB
|
||||
- **获取方式**:`db.ListCollectionNames()`
|
||||
- **返回结果**:集合名数组
|
||||
- **数据库参数**:必须指定数据库
|
||||
- **懒加载**:展开数据库节点时加载
|
||||
|
||||
---
|
||||
|
||||
### 2.5 表结构查询差异
|
||||
|
||||
#### MySQL
|
||||
- **获取方式**:`DESCRIBE table_name` 或 `SHOW COLUMNS FROM table_name`
|
||||
- **返回内容**:
|
||||
- 字段名(Field)
|
||||
- 类型(Type)
|
||||
- 是否为空(Null)
|
||||
- 键信息(Key)
|
||||
- 默认值(Default)
|
||||
- 额外信息(Extra)
|
||||
- **数据格式**:结构化列信息数组
|
||||
|
||||
#### Redis
|
||||
- **获取方式**:`TYPE key`、`TTL key`、`MEMORY USAGE key`
|
||||
- **返回内容**:
|
||||
- Key类型(string、hash、list、set、zset等)
|
||||
- TTL(过期时间)
|
||||
- 值大小(内存占用)
|
||||
- **数据格式**:Key信息对象
|
||||
|
||||
#### MongoDB
|
||||
- **获取方式**:`db.collection.find().limit(5)` + 统计信息
|
||||
- **返回内容**:
|
||||
- 文档示例(最多5个)
|
||||
- 字段统计信息
|
||||
- 索引信息(索引名、唯一性、键定义)
|
||||
- 文档总数
|
||||
- **数据格式**:集合结构对象(包含多个子对象)
|
||||
|
||||
---
|
||||
|
||||
### 2.6 索引查询差异
|
||||
|
||||
#### MySQL
|
||||
- **获取方式**:`SHOW INDEX FROM table_name`
|
||||
- **返回内容**:
|
||||
- 索引名(Key_name)
|
||||
- 列名(Column_name)
|
||||
- 唯一性(Non_unique)
|
||||
- 索引类型(Index_type)
|
||||
- 排序方式(Collation)
|
||||
- **数据格式**:索引信息数组
|
||||
|
||||
#### Redis
|
||||
- **支持情况**:❌ 不支持索引
|
||||
- **返回结果**:空数组 `[]`
|
||||
- **说明**:Redis是键值存储,没有索引概念
|
||||
|
||||
#### MongoDB
|
||||
- **获取方式**:包含在集合结构中(`GetCollectionStructure`)
|
||||
- **返回内容**:
|
||||
- 索引名
|
||||
- 唯一性
|
||||
- 键定义(字段和排序方向)
|
||||
- **数据格式**:索引信息数组(从集合结构中提取)
|
||||
- **特殊说明**:不提供独立的索引查询接口,索引信息包含在表结构查询中
|
||||
|
||||
---
|
||||
|
||||
### 2.7 编辑器支持差异
|
||||
|
||||
#### MySQL
|
||||
- **语言模式**:SQL语法高亮
|
||||
- **默认内容**:`select 1;`
|
||||
- **执行按钮**:`执行`
|
||||
- **语法特性**:标准SQL语法,支持多语句
|
||||
|
||||
#### Redis
|
||||
- **语言模式**:JavaScript语法高亮(用于命令编辑)
|
||||
- **默认内容**:
|
||||
```
|
||||
GET key
|
||||
SET key value
|
||||
HGET hash field
|
||||
```
|
||||
- **执行按钮**:`执行命令`
|
||||
- **语法特性**:命令格式,支持引号参数
|
||||
|
||||
#### MongoDB
|
||||
- **语言模式**:JavaScript语法高亮(MongoDB Shell语法,用于编辑)
|
||||
- **默认内容**:
|
||||
```
|
||||
db.collection.find({})
|
||||
// 示例:db.users.find({name: "John"})
|
||||
```
|
||||
- **执行按钮**:`执行查询`
|
||||
- **语法特性**:编辑器显示MongoDB Shell语法,但实际执行需要转换为JSON格式(待实现自动转换)
|
||||
- **当前限制**:需要手动输入JSON格式命令,不支持直接执行Shell语法
|
||||
|
||||
---
|
||||
|
||||
### 2.8 结果展示差异
|
||||
|
||||
#### MySQL
|
||||
- **展示模式**:主要使用表格模式
|
||||
- **数据格式**:二维数组(行×列)
|
||||
- **列定义**:自动从查询结果生成
|
||||
- **统计信息**:行数、执行时间
|
||||
- **JSON模式**:可选,用于特殊查询结果
|
||||
|
||||
#### Redis
|
||||
- **展示模式**:主要使用JSON模式
|
||||
- **数据格式**:命令返回值(可能是字符串、数字、数组等)
|
||||
- **统计信息**:执行时间(RowsAffected固定为1)
|
||||
- **表格模式**:不适用(Redis结果不是表格结构)
|
||||
|
||||
#### MongoDB
|
||||
- **展示模式**:JSON模式为主,表格模式可选
|
||||
- **数据格式**:文档数组(BSON转换为JSON)
|
||||
- **列定义**:查询结果为空时无列定义
|
||||
- **统计信息**:文档数、执行时间
|
||||
- **表格模式**:适用于简单查询结果
|
||||
|
||||
---
|
||||
|
||||
## 三、实现差异总结
|
||||
|
||||
### 3.1 核心差异点
|
||||
|
||||
1. **执行方式**
|
||||
- MySQL:标准SQL语句
|
||||
- Redis:命令字符串解析
|
||||
- MongoDB:JavaScript代码执行(待完善)
|
||||
|
||||
2. **数据库概念**
|
||||
- MySQL:逻辑数据库,包含表
|
||||
- Redis:逻辑数据库(0-15),包含Key
|
||||
- MongoDB:逻辑数据库,包含集合
|
||||
|
||||
3. **数据结构**
|
||||
- MySQL:关系型,表格结构
|
||||
- Redis:键值对,无固定结构
|
||||
- MongoDB:文档型,JSON结构
|
||||
|
||||
4. **查询方式**
|
||||
- MySQL:SQL查询
|
||||
- Redis:命令查询
|
||||
- MongoDB:查询表达式
|
||||
|
||||
5. **结果格式**
|
||||
- MySQL:表格数据
|
||||
- Redis:命令返回值
|
||||
- MongoDB:文档数组
|
||||
|
||||
### 3.2 统一处理策略
|
||||
|
||||
1. **结果类型统一**:
|
||||
- MySQL:`query`/`update`
|
||||
- Redis:`command`
|
||||
- MongoDB:`query`/`update`
|
||||
|
||||
2. **展示模式统一**:
|
||||
- 表格模式:适用于MySQL查询结果
|
||||
- JSON模式:适用于Redis命令结果和MongoDB查询结果
|
||||
|
||||
3. **编辑器统一**:
|
||||
- 根据数据库类型自动切换语言模式
|
||||
- 自动设置默认内容和按钮文本
|
||||
|
||||
4. **API接口统一**:
|
||||
- 所有数据库类型使用相同的API接口
|
||||
- 内部根据类型分发到不同的实现
|
||||
|
||||
---
|
||||
|
||||
## 四、功能完整性评估
|
||||
|
||||
### 4.1 MySQL功能完整性:⭐⭐⭐⭐⭐ (100%)
|
||||
- ✅ 所有核心功能已实现
|
||||
- ✅ 查询、更新、表结构、索引查询完整
|
||||
- ✅ 编辑器支持完善
|
||||
|
||||
### 4.2 Redis功能完整性:⭐⭐⭐⭐☆ (90%)
|
||||
- ✅ 核心功能已实现
|
||||
- ⚠️ 索引查询不支持(Redis本身不支持)
|
||||
- ✅ 命令执行、Key列表、Key信息查询完整
|
||||
|
||||
### 4.3 MongoDB功能完整性:⭐⭐⭐⭐☆ (85%)
|
||||
- ✅ 核心功能已实现
|
||||
- ⚠️ 查询执行需要JSON格式(不支持直接执行Shell语法)
|
||||
- ✅ 集合列表、集合结构查询完整
|
||||
- ⚠️ 索引查询包含在集合结构中(非独立接口)
|
||||
- ⚠️ 需要实现Shell语法到JSON的自动转换
|
||||
|
||||
---
|
||||
|
||||
## 五、优化建议
|
||||
|
||||
### 5.1 短期优化
|
||||
|
||||
1. **MongoDB查询执行优化**(高优先级)
|
||||
- 当前需要JSON格式,用户体验不佳
|
||||
- 建议:实现MongoDB Shell语法到JSON的自动转换
|
||||
- 方案1:集成JavaScript引擎(如goja)解析Shell语法
|
||||
- 方案2:实现简单的语法解析器,支持常用操作
|
||||
|
||||
2. **Redis命令补全**
|
||||
- 添加Redis命令自动补全功能
|
||||
- 建议:在编辑器中集成Redis命令提示
|
||||
|
||||
3. **MongoDB查询补全**
|
||||
- 添加MongoDB Shell语法补全
|
||||
- 建议:在编辑器中集成MongoDB方法提示
|
||||
|
||||
### 5.2 长期优化
|
||||
|
||||
1. **统一查询接口**
|
||||
- 考虑设计统一的查询语言或抽象层
|
||||
- 当前各数据库使用不同的执行方式
|
||||
|
||||
2. **结果格式标准化**
|
||||
- 进一步统一结果格式,便于前端处理
|
||||
- 当前已有统一的结果类型,但数据格式仍有差异
|
||||
|
||||
3. **性能优化**
|
||||
- Redis Key列表查询(大量Key时)
|
||||
- MongoDB集合结构查询(大量文档时)
|
||||
|
||||
---
|
||||
|
||||
## 六、总结
|
||||
|
||||
### 6.1 功能支持情况
|
||||
|
||||
- **MySQL**:功能最完整,所有功能都已实现
|
||||
- **Redis**:核心功能完整,索引查询不支持(Redis特性)
|
||||
- **MongoDB**:核心功能完整,查询执行待完善
|
||||
|
||||
### 6.2 差异处理策略
|
||||
|
||||
- **统一接口**:所有数据库类型使用相同的API接口
|
||||
- **类型分发**:内部根据数据库类型分发到不同实现
|
||||
- **结果统一**:统一结果类型和展示模式
|
||||
- **编辑器适配**:根据数据库类型自动适配编辑器
|
||||
|
||||
### 6.3 后续工作
|
||||
|
||||
1. 完善MongoDB查询执行功能
|
||||
2. 优化Redis大量Key查询性能
|
||||
3. 添加命令/语法补全功能
|
||||
4. 统一结果格式处理
|
||||
|
||||
---
|
||||
|
||||
**结论**:不同数据库类型的功能差异主要体现在执行方式、数据结构、查询方式等方面,但通过统一的接口设计和类型分发,实现了良好的功能支持。MySQL功能最完整,Redis和MongoDB核心功能已实现,部分功能待完善。
|
||||
|
||||
106
docs/04-功能迭代/GO-DESK-2.数据库客户端/设计文档/需求设计/需求.md
Normal file
106
docs/04-功能迭代/GO-DESK-2.数据库客户端/设计文档/需求设计/需求.md
Normal file
@@ -0,0 +1,106 @@
|
||||
# 数据库客户端需求
|
||||
|
||||
基于 go-desk 实现数据库连接客户端工具,简单易用,易用性超过 dbeaver。
|
||||
|
||||
## 支持数据库
|
||||
- 当前支持:MySQL、Redis、MongoDB
|
||||
- 计划支持:Oracle、ES、ClickHouse、PostgreSQL、SQLite
|
||||
|
||||
## **升级-优化-Bug**
|
||||
```
|
||||
--- 以下内容AI只可读取,不要修改,人工维护 ---
|
||||
FIXME: 当前考虑重要(一定会尝试,提前预留或推进)
|
||||
1、增加功能区:左侧功能区分上下两部分,下面增加一个 效果参考数据库连接的效果 ,把 历史的sql编辑器,书签,sql 模板列表 都放到这个地方;
|
||||
2、当前最小化 mvp 需要做到 能用好用, 现在还有诸多bug ,使用不便利, 这个我们还要逐一整理出来, 也可以通过网络获取一个最小化版本的数据库客户端用户最关心的核心点,然后有针对性的迭代改进
|
||||
3、精细控制文档内容, 不要 随性创建过多过量低质量文档,这样根本不利于阅读维护,
|
||||
4、实现我们的 go-desk 升级更新 方便后续做迭代分发,
|
||||
|
||||
FIXME: 当前考虑预留,但是不要破环当前主要的设计,破环性太大就不要做实质性的编码预留,未来可能会走的方向
|
||||
1、为未来service-client 部署做预留扩展,(希望做最少的代码逻辑精准实现本地桌面与远端机器的联动,类似于bs->bcs混合版本)
|
||||
2、文本编辑区支持不止 sql 一种类型文本内容,默认sql,其他支持 txt,html,js/ts,css,md 的语法高亮编辑及高效的结果渲染预览
|
||||
3、模板文件 支持加密本密码本概念,存储的 content 需要做加密存储,必须输入作者密钥才可解密数据
|
||||
|
||||
|
||||
FIXME: 优化及 BUG 修复:
|
||||
全局:
|
||||
1、sql编辑区与结果区支持调整动态拖拽调整比例,
|
||||
2、未看到右键菜单,
|
||||
sql编辑区(文本编辑区):
|
||||
1、第二个sql编辑区的 输入框未正常展示,添加后不能输入内容
|
||||
2、sql 编辑区高度当内容超过区域能展示范围的时候, 没有滚动条导致不能展示出其他超出的内容,
|
||||
3、编辑区所选择的数据库连接及database, 选中后下次加载默认选中,
|
||||
4、选中数据连接或database 的时候 sql编辑区 不用整个区域刷新,现在看到 sql输入框也 reload,这个不必要
|
||||
5、表结构区点击表的时候 未展示
|
||||
|
||||
--- 以上内容AI只可读取,不要修改,人工维护 ---
|
||||
```
|
||||
|
||||
## 页面布局
|
||||
1. **数据库列表视图区域**:左侧,树形结构展示连接、数据库、表
|
||||
2. **执行语句编辑区域**:中间,SQL编辑器(暂时只保留一个编辑区)
|
||||
3. **结果展示区域**:底部,结果表格/JSON + 消息日志
|
||||
|
||||
## 数据库连接区
|
||||
- **连接列表**:树形结构,按类型分组,懒加载数据库/表列表,显示连接状态和类型图标
|
||||
- **连接管理**:新建/编辑/删除连接,支持MySQL/Redis/MongoDB,密码加密存储,测试连接
|
||||
- **快捷功能**:~~书签管理入口、SQL模板入口~~(已删除)
|
||||
- **数据存储**:SQLite存储,密码AES加密,自动加载
|
||||
|
||||
## SQL编辑器
|
||||
- **编辑器功能**:SQL/JS语法高亮(根据数据库类型),行号,自动换行,F5执行完整,Ctrl+Enter执行选中
|
||||
- **内容自动存储**:SQLite存储,内容自动保存(防抖1秒),关联连接ID
|
||||
- **执行功能**:执行前检查连接,结果在结果区域显示
|
||||
- **工具栏**:执行按钮、执行选中按钮、折叠/展开按钮,显示当前连接信息
|
||||
- **界面布局**:编辑器占据主要空间,支持折叠/展开
|
||||
- ⚠️ **多Tab支持**:暂时移除,仅保留一个SQL编辑区
|
||||
|
||||
## 结果区域
|
||||
- **结果tab**:表格/JSON展示,显示统计信息(行数、执行时间),自动生成列定义
|
||||
- **消息tab**:记录执行事件(SQL、时间、结果),消息类型(info/success/error/warning),最多保留100条
|
||||
- **区域控制**:支持折叠/展开编辑器,结果区域高度可调(200-600px),编辑器隐藏时结果区域全屏
|
||||
|
||||
## ~~书签管理~~ ❌ 已删除
|
||||
- **状态**:功能已删除
|
||||
|
||||
## ~~SQL模板管理~~ ❌ 已删除
|
||||
- **状态**:功能已删除
|
||||
|
||||
## 表结构查询
|
||||
- **MySQL**:显示列信息(字段名、类型、是否为空、默认值、注释),通过DESCRIBE获取
|
||||
- **MongoDB**:显示文档示例、字段统计、索引信息、文档总数
|
||||
- **Redis**:显示Key类型、TTL、值大小等信息
|
||||
- **查询方式**:点击连接树节点(待实现界面展示)
|
||||
|
||||
## 索引查询
|
||||
- **MySQL**:显示索引信息(索引名、列名、唯一性、类型),通过SHOW INDEX获取
|
||||
- **MongoDB**:索引信息包含在集合结构中
|
||||
- **Redis**:不支持索引
|
||||
- **查询方式**:通过API接口查询(待实现界面展示)
|
||||
|
||||
## 多数据库类型支持
|
||||
- **MySQL**:SQL执行(SELECT/INSERT/UPDATE/DELETE/DDL),数据库/表列表,表结构,索引查询
|
||||
- **Redis**:命令执行(GET/SET/HGET/HSET等),Key列表(模式匹配),Key信息(TYPE/TTL/SIZE),数据库选择(0-15)
|
||||
- **MongoDB**:查询执行(find/aggregate),数据库/集合列表,集合结构(文档示例、字段统计、索引)
|
||||
- **类型识别**:根据连接类型自动切换编辑器语言(MySQL=SQL高亮,Redis/MongoDB=JS高亮),自动设置默认内容和按钮文本
|
||||
|
||||
## 数据存储
|
||||
- **SQLite存储**:连接配置(加密密码)、SQL编辑器内容,~~书签数据、模板数据~~(已删除),自动迁移表结构
|
||||
- **数据加密**:连接密码AES加密存储,解密后用于连接测试和执行
|
||||
- **数据持久化**:连接配置立即生效,SQL编辑器内容防抖保存(1秒),编辑器显示状态保存到localStorage
|
||||
|
||||
## 快捷键
|
||||
- **编辑器**:F5执行完整,Ctrl+Enter执行选中,CodeMirror默认快捷键
|
||||
- **界面**:折叠/展开编辑器
|
||||
|
||||
## 待实现功能
|
||||
1. SQL格式化
|
||||
2. 代码补全(表名、列名、关键字提示)
|
||||
3. 多Tab支持(暂时移除,后续版本恢复)
|
||||
4. 数据导出(CSV/SQL/JSON)
|
||||
5. 消息历史清空
|
||||
6. 表结构界面展示
|
||||
7. 索引界面展示
|
||||
8. 右键菜单(连接树节点)
|
||||
9. 智能SQL(接入大模型)
|
||||
10. 文件/SQL文件管理(导入/导出)
|
||||
|
||||
Reference in New Issue
Block a user