✨ 新功能: - 实现 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 抽象设计模式 - 学习异步数据库操作 - 实践配置管理
50 lines
1.1 KiB
TOML
50 lines
1.1 KiB
TOML
[package]
|
|
name = "rust-user-api"
|
|
version = "0.1.0"
|
|
edition = "2021"
|
|
authors = ["Your Name <your.email@example.com>"]
|
|
description = "A REST API server for user management built with Rust and Axum"
|
|
|
|
[dependencies]
|
|
# Web 框架
|
|
axum = "0.7"
|
|
tokio = { version = "1.0", features = ["full"] }
|
|
tower = "0.4"
|
|
tower-http = { version = "0.5", features = ["cors", "trace"] }
|
|
|
|
# 序列化
|
|
serde = { version = "1.0", features = ["derive"] }
|
|
serde_json = "1.0"
|
|
|
|
# 时间处理
|
|
chrono = { version = "0.4", features = ["serde"] }
|
|
|
|
# UUID 生成
|
|
uuid = { version = "1.0", features = ["v4", "serde"] }
|
|
|
|
# 环境变量
|
|
dotenv = "0.15"
|
|
|
|
# 日志
|
|
tracing = "0.1"
|
|
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
|
|
|
|
# 密码哈希
|
|
bcrypt = "0.15"
|
|
|
|
# JWT 认证
|
|
jsonwebtoken = "9.0"
|
|
|
|
# 验证
|
|
validator = { version = "0.16", features = ["derive"] }
|
|
|
|
# 数据库
|
|
sqlx = { version = "0.7", features = ["runtime-tokio-rustls", "sqlite", "chrono", "uuid"] }
|
|
|
|
# 异步 trait
|
|
async-trait = "0.1"
|
|
|
|
# HTTP 客户端(用于测试)
|
|
[dev-dependencies]
|
|
reqwest = { version = "0.11", features = ["json", "rustls-tls"], default-features = false }
|
|
tokio-test = "0.4" |