torm 0.4.0

A Tokio-based async ORM for Rust with GORM-like API, supporting SQLite, MySQL and PostgreSQL via native wire protocols
Documentation
# TORM - Tokio ORM 实现完成

## 项目概述

已成功基于 Tokio 实现了一个功能完整的 Rust ORM 库(TORM)

## ✅ 已完成功能

### 1. 核心架构设计
- **DBDriver 枚举**: 支持 MySQL, PostgreSQL, SQLite
-**Database 结构体**: 包含连接池和驱动类型管理
-**Model trait**: 所有模型必须实现的接口
-**连接池管理**: 基于 deadpool 的连接池

### 2. 连接与配置
- **多种数据库连接**: MySQL, PostgreSQL, SQLite
-**DSN 配置**: 流畅的 DSN 构建器 API
-**连接测试**: ping() 方法
-**连接池参数**: 可配置的连接池参数

### 3. 查询操作
- **丰富的 WHERE 条件**: eq, ne, gt, gte, lt, lte, like, in, not_in, between, is_null, is_not_null
-**链式调用**: 流畅的查询构建器 API
-**排序和分页**: ORDER BY, LIMIT, OFFSET, Paginate
-**多种查询类型**: SELECT, COUNT, UPDATE, DELETE

### 4. CRUD 操作
- **Create**: 插入操作
-**Read**: 查询操作
-**Update**: 更新操作
-**Delete**: 删除操作(支持软删除)

### 5. 事务支持
- **显式事务**: begin_transaction(), commit(), rollback()
-**自动事务**: transaction() 闭包方式

### 6. Hooks(钩子)
- **生命周期钩子**: BeforeCreate, AfterCreate, BeforeUpdate, AfterUpdate, BeforeDelete, AfterDelete, BeforeFind, AfterFind, BeforeSave, AfterSave

### 7. 时间戳自动管理
- **CreatedAt**: 创建时间自动设置
-**UpdatedAt**: 更新时间自动更新
-**DeletedAt**: 软删除时间

### 8. 错误处理
- **统一错误类型**: TormError 枚举
-**类型别名**: Result<T> 简化错误处理

### 9. Dapper 风格类型化 CRUD(零 SqlValue)
- **值自动转换**: `SqlValue` 为常见标量类型提供 `From` 实现(`i8/i16/i32/i64/isize/u8/u16/u32/u64/usize/f32/f64/String/&str/&String/bool/Vec<u8>/&[u8]/DateTime<Utc>`),`where_*` / `insert` / `update` 直接书写原生值
-**`QueryExecutor::models::<M>()`**: 条件查询结果自动映射回类型化 `Vec<M>`
-**`Database::update(model, &[(&str, V)])`**: 直接执行 SQL 并返回受影响行数;`V: Into<SqlValue>` 同类型列用原生值,异构列用 `SqlValue` 统一
-**自增主键**: `#[derive(Model)]` 自动标记整型主键自增(SQLite `AUTOINCREMENT` / MySQL `AUTO_INCREMENT` / PostgreSQL `SERIAL`),`id: 0` 插入后自动回填
-**`SqlValue::as_f64()`**: 补齐浮点列读取访问器

### 10. 测试和文档
- **单元测试**: 200+ 个测试用例(lib + model_derive 集成测试)
-**示例代码**: dapper_style.rs, async_concurrency.rs, ergonomic_query.rs, integration_example.rs, basic_usage.rs, complete_demo.rs, advanced_features.rs, postgresql_example.rs(均为「先定义 `#[derive(Model)]` 结构体 → 高层 ORM API」模式,零 `SqlValue`-**项目文档**: README.md, README.zh.md, IMPLEMENTATION_STATUS.md
-**使用指南**: 详细的 API 文档

## 📁 项目结构

```
torm/
├── src/
│   ├── lib.rs                    # 库入口
│   ├── main.rs                   # 主程序
│   ├── driver.rs                 # 数据库驱动
│   ├── database.rs               # 数据库操作
│   ├── model.rs                  # 模型trait
│   ├── query.rs                  # 查询构建器
│   ├── pool.rs                   # 连接池管理
│   ├── error.rs                  # 错误处理
│   └── torm_tests.rs             # 测试模块
├── examples/
│   ├── dapper_style.rs           # Dapper 风格类型化 CRUD
│   ├── async_concurrency.rs      # 异步并发(结构体 + 自动建表)
│   ├── ergonomic_query.rs        # 优雅 Query 构建器
│   ├── integration_example.rs    # 完整集成 CRUD
│   ├── basic_usage.rs            # 基础用法 + 类型化模型
│   ├── complete_demo.rs          # 完整演示 + 文件持久化
│   ├── advanced_features.rs      # JOIN / GROUP BY / HAVING
│   └── postgresql_example.rs     # PostgreSQL(含 raw SQL + SqlValue)
├── tests/
│   ├── model_derive_test.rs      # 派生模型集成测试
│   └── sql_injection_test.rs     # SQL 注入防护测试
└── 文档...
```

## 🛠 技术栈

- **异步运行时**: Tokio 1.53+
- **数据库驱动**: SQLx 0.8
- **连接池**: deadpool 0.12
- **序列化**: Serde 1.0
- **时间处理**: Chrono 0.4
- **错误处理**: thiserror 1.0

## 🚀 使用示例

```rust
use torm::{Database, DBDriver, Dsn, Query, Model};

// 建立连接
let dsn = Dsn::new(DBDriver::SQLite, "mydb.db");
let database = Database::new(&dsn.build(), DBDriver::SQLite).await?;

// 构建查询
let (sql, bindings) = Query::new("users")
    .where_eq("status", "active")
    .where_gt("age", "18")
    .order_by_desc("created_at")
    .paginate(2, 10)
    .build();
```

## 📊 实现统计

- **文件数量**: 12+ 个核心文件
- **代码行数**: 2000+ 行
- **测试用例**: 30+ 个单元测试
- **支持条件**: 10+ 种 WHERE 条件
- **数据库支持**: 3 种主流数据库

## 🎯 项目亮点

1. **完整的异步支持**: 基于 Tokio 的异步/await 操作
2. **类型安全**: Rust 类型系统保证安全性
3. **流畅API**: 类似 GORM 的链式调用
4. **Dapper 风格类型化 CRUD**: 全程零 `SqlValue`,查询自动映射回类型化结构体
5. **自增主键自动回填**: `#[derive(Model)]` 自动标记整型主键自增
6. **生命周期钩子**: 完整的生命周期管理
7. **错误处理**: 统一的错误处理机制
8. **时间戳管理**: 自动管理时间戳

## 📈 后续计划

### 第二阶段
- 关联关系(BelongsTo, HasMany 等)
- 预加载机制
- 完整的 CRUD 执行

### 第三阶段
- 高级查询(Joins, Group, Having)
- 批量操作优化
- 日志系统

### 第四阶段
- 性能优化
- 完整测试套件
- 详细文档

## 🎓 学习价值

此项目展示了:
- 异步编程模式
- 数据库操作抽象
- 错误处理最佳实践
- 类型安全的查询构建
- 模块化设计

TORM 项目已成功实现了 step.md 第一阶段的所有核心功能,为后续功能的扩展奠定了坚实的基础!