Diesel 2.0.0 正式发布,Rust ORM 框架

Diesel 2.0.0 已正式发布。据称此版本开发周期长达 3 年,包含了超过 1700 次 commit。

Diesel 是一个安全可扩展的 Rust ORM 框架和查询构建工具。Diesel 可避免运行时错误,提供最好的性能。

2.0 添加了许多新功能,并重写了大部分内部结构。由于这是新的大版本,它还包含许多破坏性变化,具体处理方案可查看迁移指南

更新亮点

  • 支持完全类型检查的GROUP BY
  • 支持表别名
  • 支持通过相应类型定义 select 子句
  • 支持UNION/INTERSECT查询

此外,Diesel 2.0.0 还修复了类级别(type level) SQL 表示中的几个问题,它现在可以正确处理以下情况:

  • 混合嵌套LEFT JOINSINNER JOINS
  • 通过AND,OR和类似的运算符链接混合的可空表达式 (nullable expressions)

支持GROUP BY子句

Diesel 2.0 添加了对GROUP BY子句的支持,用于 select 查询。

示例

 users::table.inner_join(posts::table)
    .group_by(users::id)
    .select((users::name, count(posts::id)))

支持表别名

以下查询展示了此功能:

// Define new table alias for the existing `users` table
let users1 = diesel::alias!(schema::users as user1);

// Use the corresponding alias inside any existing query
users::table
    .inner_join(users1.on(users::id).eq(users1.field(users::id))))
    .select((users::id, users::name, users1.field(users::name)))
    .order_by(users1.field(users::id))

支持UNION/INTERSECT查询

此功能轻松地将多个查询链接在一起,只要它们返回相同类型的字段。

 users.select(user_name.nullable())
    .union(animals.select(animal_name).filter(animal_name.is_not_null()))

Release Note | Changelog

猜你喜欢

转载自www.oschina.net/news/209004/diesel-2-0-0-released