このプロジェクトについて
qbrsは、コンパイル時の検証の利点と動的なクエリ構築の柔軟性を組み合わせた、Rust用の型安全なSQLクエリビルダーです。多くのビルダーが静的な安全性とランタイムの動性の間で選択を強いるのに対し、qbrsはフラットな型レベルのリストを使用して列とジョインの参照をコンパイル時にチェックし、述語の蓄積をランタイムのベクトルとして扱います。これにより、開発者は`.into_boxed()`や`.dynamic()`のようなエスケープハッチを必要とせずに、条件付きでフィルターを追加したりループを実行したりできます。
主な特徴には以下が含まれます:
- **コンパイル時の安全性**:参照された列が現在のクエリスコープ内に存在することを検証します。たとえば、ジョインされていないテーブルの列を参照するとコンパイルエラーが発生します。
- **自動的なNullability**:`LEFT JOIN`の右側の列に対して`Option<T>`型を自動的に導出し、手動での注釈なしに型正しさを確保します。
- **列ベースの結果**:行は位置ではなく列名でデコードされるため、スキーマの変更がより安全になり、コードがより読みやすくなります。
- **包括的なSQLサポート**:`SELECT`、`INSERT`、`UPDATE`、`DELETE`、すべてのジョインタイプ、`GROUP BY`、`HAVING`、アグリゲート、`DISTINCT`、upserts、セット操作(`UNION`など)、ウィンドウ関数、CTE、トランザクションをサポートします。
- **方言ゲート**:SQLの方言はクエリの型の一部であり、レンダリング時ではなくビルド時に機能チェック(例:`RETURNING`のサポート)を可能にします。
このプロジェクトは現在初期段階(v0.1.0/0.2.0)であり、**プロダクションレディではない**と明示されています。これはORMではなく、変更トラッキング、アイデンティティマップ、またはオブジェクト関係マッピングを処理しません。これらのニーズにはSeaORMが推奨されます。コンパイル時のチェック付きの生のSQLにはsqlxが推奨されます。qbrsの実行レイヤーは現在、`qbrs-sqlx`を介したPostgresに限定されていますが、MySQLとSQLiteのレンダリングはサポートされており、CIでテストされています。
注目すべき制限には、テーブルのエイリアスがない、再帰的なCTEがない、行ロック(`FOR UPDATE`)がない、アグリゲートとしてウィンドウ関数がないことが含まれます。テーブルの条件付きジョインには、`DynSelect`に型を消去する必要があり、これは狭いエスケープハッチです。このライブラリはMITまたはApache-2.0のデュアルライセンスです。
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.