mirror of
https://github.com/feigeCode/navop.git
synced 2026-09-22 00:01:25 +00:00
- 为 ClickHouse 插件实现 UI manifest,包括连接表单、数据库表单和操作清单 - 为 DuckDB 插件实现 UI manifest,支持默认数据库路径和全面的操作定义 - 为 MSSQL 插件实现 UI manifest,增加连接、数据库、模式表单和丰富的数据库操作 - 使用 LazyLock 延迟初始化 UI manifest,提升访问性能 - 添加相关测试覆盖,验证各数据库插件 UI manifest 的正确性 - 引入 manifest_helpers 辅助宏和类型,规范表单字段及操作配置 - 点击引擎类型列表和数据库表单支持多种属性及条件可视化配置 - 各数据库插件新增 ui_manifest() 和 engines() 方法接口实现
1.3 KiB
1.3 KiB
Database Abstraction Layer
这个 crate 提供了一个统一的数据库抽象层,支持多种数据库类型。
架构
-
src/- 顶层接口和公共类型plugin.rs-DatabasePlugintrait 与数据库能力入口plugin_manifest.rs- 数据库 UI manifest 合同,承载表单、能力位、动作元数据manager.rs- 数据库管理器connection.rs- 连接接口和连接池executor.rs- SQL 执行器runtime.rs- Tokio 运行时types.rs- 公共类型定义
-
src/mysql/- MySQL 实现 -
src/postgresql/- PostgreSQL 实现 -
src/sqlite/- SQLite 实现
crates/db 现在同时负责两层职责:
- 数据库运行时能力:连接、元数据、SQL 构建、导入导出
- 数据库 UI 合同:
ui_manifest()返回纯数据 manifest,供db_view做统一渲染
新增数据库插件时,除了实现 DatabasePlugin 的运行时方法,也应在插件侧返回
对应的 DatabaseUiManifest,并通过 resolve_reference_data() 提供动态下拉数据
(如 charset / collation / engines)。
使用示例
use db::{DbManager, DatabaseType, DbConnectionConfig};
let manager = DbManager::new();
let plugin = manager.get_plugin(&DatabaseType::MySQL)?;
let connection = plugin.create_connection(config).await?;