# 数据库功能更新日志
## [0.1.1] - 2026-01-12
### 新增功能
#### 关系数据库支持
- ✅ 添加 SQLx 集成,支持 PostgreSQL、MySQL 和 SQLite
- ✅ 实现数据库连接池管理
- ✅ 提供配置驱动的数据库初始化
- ✅ 支持数据库连接健康检查
- ✅ 可配置连接池参数(最大/最小连接数、超时等)
#### 向量数据库支持
- ✅ 集成 Qdrant 向量数据库客户端
- ✅ 支持向量数据库连接管理
- ✅ 提供集合管理功能(列出、检查存在性)
- ✅ 可配置 API Key 认证
- ✅ 支持自定义超时和默认集合设置
#### 配置系统增强
- ✅ 添加 `[database]` 配置段
- `enabled`: 启用/禁用关系数据库
- `db_type`: 数据库类型(postgres, mysql, sqlite)
- `url`: 数据库连接 URL
- `max_connections`: 最大连接数
- `min_connections`: 最小连接数
- `connect_timeout`: 连接超时
- `auto_migrate`: 自动迁移标志(保留)
- ✅ 添加 `[qdrant]` 配置段
- `enabled`: 启用/禁用向量数据库
- `url`: Qdrant 服务器地址
- `api_key`: API 密钥(可选)
- `timeout`: 请求超时
- `default_collection`: 默认集合名称
#### 特性标志
- ✅ `database`: 启用关系数据库功能
- ✅ `vector`: 启用向量数据库功能
- ✅ `full`: 包含所有功能(templates, jwt, database, vector)
#### 核心模块
- ✅ `src/database/mod.rs`: 数据库模块入口
- ✅ `src/database/relational.rs`: 关系数据库实现
- ✅ `src/database/vector.rs`: 向量数据库实现
#### API 增强
- ✅ `WebServer::database()`: 获取关系数据库实例
- ✅ `WebServer::vector_db()`: 获取向量数据库实例
- ✅ `Database::pool()`: 获取连接池
- ✅ `Database::ping()`: 测试连接
- ✅ `Database::execute_raw()`: 执行原始 SQL
- ✅ `VectorDatabase::client()`: 获取 Qdrant 客户端
- ✅ `VectorDatabase::ping()`: 健康检查
- ✅ `VectorDatabase::list_collections()`: 列出集合
- ✅ `VectorDatabase::collection_exists()`: 检查集合
#### 文档和示例
- ✅ 完整的数据库使用文档(DATABASE.md)
- ✅ 数据库示例项目(examples/database-example.rs)
- ✅ 示例配置文件(examples/database-config.toml)
- ✅ 更新所有示例配置添加数据库配置段
### 依赖项
- 添加 `sqlx ^0.7` (可选)
- 添加 `qdrant-client =1.9.0` (可选)
### 技术实现
- 使用 `Arc<QdrantClient>` 实现 VectorDatabase 的 Clone 和共享
- 实现自动数据库初始化和连接测试
- 在服务器启动日志中显示数据库状态
- 通过特性标志实现条件编译,减小基础包大小
### 使用方式
#### 启用数据库功能
```toml
[dependencies]
hwhkit = { version = "0.1", features = ["database", "vector"] }
```
#### 配置示例
```toml
[database]
enabled = true
db_type = "postgres"
url = "postgresql://user:pass@localhost/db"
max_connections = 10
min_connections = 2
[qdrant]
enabled = true
url = "http://localhost:6334"
default_collection = "my_collection"
```
#### 代码使用
```rust
let server = WebServerBuilder::new()
.config_from_file("config.toml")
.build()
.await?;
if let Some(db) = server.database() {
// 使用关系数据库
let pool = db.pool();
}
if let Some(vdb) = server.vector_db() {
// 使用向量数据库
let client = vdb.client();
}
```
### 兼容性
- Rust 1.85.0+
- SQLx 0.7
- Qdrant Client 1.9.0
### 测试
- ✅ 基础编译测试通过
- ✅ 特性标志测试通过
- ✅ 集成测试示例创建完成
### 后续计划
- [ ] 添加数据库迁移管理
- [ ] 添加连接池监控
- [ ] 添加更多数据库操作辅助函数
- [ ] 完善错误处理和重试机制
- [ ] 添加数据库性能指标收集