Stage 8: 完成 SQLite 数据库存储集成
✨ 新功能: - 实现 DatabaseUserStore 结构体,支持 SQLite 数据库操作 - 创建 UserStore trait 抽象层,支持多种存储后端 - 添加数据库连接和表初始化功能 - 支持通过环境变量配置数据库 URL 🔧 技术改进: - 使用 SQLx 进行异步数据库操作 - 实现 trait-based 存储架构,便于扩展 - 添加完整的 CRUD 数据库操作 - 支持数据库错误处理和类型转换 🧪 测试验证: - 所有 API 端点正常工作 - 数据持久化到 SQLite 文件 - 用户创建、查询、登录功能完整 - 重复用户名检查正常工作 📁 文件变更: - 新增: src/storage/database.rs - SQLite 存储实现 - 新增: src/storage/traits.rs - 存储抽象 trait - 更新: src/storage/mod.rs - 导出新模块 - 更新: src/routes/mod.rs - 支持 trait 对象 - 更新: src/handlers/user.rs - 使用 trait 抽象 - 更新: src/main.rs - 数据库初始化逻辑 - 更新: Cargo.toml - 添加 SQLx 依赖 - 新增: .env - 数据库配置文件 🎯 学习目标达成: - 掌握 Rust 数据库集成 - 理解 trait 抽象设计模式 - 学习异步数据库操作 - 实践配置管理
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
//! 用户业务逻辑服务
|
||||
|
||||
use crate::models::user::User;
|
||||
use crate::storage::memory::MemoryUserStore;
|
||||
use crate::storage::{memory::MemoryUserStore, UserStore};
|
||||
use crate::utils::errors::ApiError;
|
||||
|
||||
/// 用户服务
|
||||
@@ -16,7 +16,7 @@ impl UserService {
|
||||
|
||||
/// 验证用户凭据
|
||||
pub async fn authenticate_user(&self, username: &str, password: &str) -> Result<User, ApiError> {
|
||||
match self.store.get_user_by_username(username).await {
|
||||
match self.store.get_user_by_username(username).await? {
|
||||
Some(user) => {
|
||||
if user.password_hash == format!("hashed_{}", password) {
|
||||
Ok(user)
|
||||
|
Reference in New Issue
Block a user