À propos du projet
qbrs est un constructeur de requêtes SQL sécurisé pour Rust qui combine les avantages de la vérification à temps de compilation avec la flexibilité de la construction dynamique de requêtes. Contrairement à de nombreux constructeurs qui obligent à choisir entre la sécurité statique et la dynamisme à l'exécution, qbrs vérifie les références de colonnes et de jointures à temps de compilation à l'aide d'une liste plate de niveau type, tout en traitant l'accumulation de prédicats comme un vecteur à l'exécution. Cela permet aux développeurs d'ajouter conditionnellement des filtres ou des boucles sans avoir besoin de passerelles de secours comme `.into_boxed()` ou `.dynamic()`.
Les fonctionnalités clés incluent :
- **Sécurité à temps de compilation** : Valide que les colonnes référencées existent dans la portée de la requête actuelle. Par exemple, référencer une colonne d'une table qui n'a pas été jointe entraîne une erreur de compilation.
- **Nullabilité automatique** : Dérive les types `Option<T>` pour les colonnes du côté droit des `LEFT JOIN` automatiquement, assurant la correction de type sans annotations manuelles.
- **Résultats indexés par colonnes** : Les lignes sont décodées par nom de colonne plutôt que par position, ce qui rend les changements de schéma plus sûrs et le code plus lisible.
- **Prise en charge complète de SQL** : Prend en charge `SELECT`, `INSERT`, `UPDATE`, `DELETE`, tous les types de jointure, `GROUP BY`, `HAVING`, les agrégats, `DISTINCT`, les insertions, les opérations de jeu (`UNION`, etc.), les fonctions de fenêtre, les CTE et les transactions.
- **Contrôle du dialecte** : Le dialecte SQL fait partie du type de requête, permettant des vérifications de capacité (par exemple, la prise en charge de `RETURNING`) à temps de construction plutôt qu'à temps de rendu.
Le projet est actuellement à ses débuts (v0.1.0/0.2.0) et est explicitement marqué comme **non prêt pour la production**. Ce n'est pas un ORM ; il ne gère pas le suivi des modifications, les cartes d'identité ou la cartographie objet-relationnelle. Pour ces besoins, SeaORM est recommandé. Pour les requêtes SQL brutes avec des vérifications à temps de compilation, sqlx est suggéré. La couche d'exécution de qbrs est actuellement limitée à Postgres via `qbrs-sqlx`, bien que les rendus MySQL et SQLite soient pris en charge et testés en CI.
Les limitations notables incluent l'absence d'alias de table, de CTE récursifs, de verrouillage de ligne (`FOR UPDATE`) et d'agrégats comme fonctions de fenêtre. La jointure conditionnelle de tables nécessite l'effacement des types en `DynSelect`, qui est une passerelle étroite. La bibliothèque est sous licence double MIT ou Apache-2.0.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.