À 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.