Diesel 2.0.0 が正式にリリースされました。このバージョンの開発サイクルは 3 年にも及び、1700 以上のコミットが含まれていると言われています。
Diesel は、安全で拡張可能な Rust ORM フレームワークおよびクエリ ビルダーです。Diesel は実行時エラーを回避し、最高のパフォーマンスを提供します。
2.0 では、多くの新機能が追加され、内部のほとんどが書き直されています。これは新しいメジャー バージョンであるため、多くの重大な変更も含まれています。具体的な処理については、移行ガイドを参照してください。
ハイライトを更新
- 完全に型チェック済み
GROUP BY
- テーブル エイリアスのサポート
- 対応するタイプによる選択句の定義のサポート
- サポート
UNION
・INTERSECT
お問い合わせ
さらに、Diesel 2.0.0 では、タイプ レベルの SQL 表現におけるいくつかの問題が修正され、次のケースが正しく処理されるようになりました。
- 混合ネスティング
LEFT JOINS
とINNER JOINS
AND
、および同様の演算子を介しOR
た混合 null 許容式の連鎖
サポート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()))