Faisant initialement partie de BaDaaS, CQL permet une persistance et une interrogation faciles et sûres des objets.
Il est construit sur gorm, une bibliothèque qui fournit en fait les fonctionnalités d'un ORM : mapper des objets aux tables de la base de données SQL. Bien que gorm fasse bien ce travail avec sa migration automatique, l'exécution de requêtes sur ces objets est quelque peu limitée, nous obligeant à écrire directement des requêtes SQL lorsqu'elles sont complexes. CQL cherche à remédier à ces limitations avec un système de requêtes qui :
Langue | Requête |
---|---|
SQL | SÉLECTIONNER des villes.* DES villes INNER JOIN pays ON country.id = villes.country_id ET country.name = "France" OÙ villes.nom = "Paris" |
GORM | db.Où( "villes.nom = ?", "Paris", ).Joint( "Pays", db.Où( "Pays.nom = ?", "France", ), ).Rechercher(&villes) |
CQL | cql.Query[models.City]( base de données, conditions.City.Name.Is().Eq("Paris"), conditions.Ville.Pays( conditions.Country.Name.Is().Eq("France"), ), ).FindOne() |
Il est vrai que son objectif semble être le même :
API DAO 100 % sécurisée sans interface{}
Bien que gorm-gen fournisse une API plus structurée que gorm pour effectuer des requêtes, fournissant des méthodes telles que :
Where ( conds ... gen . Condition ) IUserDo
on peut voir sur ces signatures que, par exemple, la méthode Where reçoit des paramètres de type gen.Condition. De cette manière, les conditions de différents modèles pourraient être mélangées sans générer d'erreur de compilation :
u := query . User
c := query . Company
user , err := u . Where ( c . Name . Eq ( "franco" )). First ()
ce qui générerait une erreur d'exécution lors de l'exécution du SQL généré :
SELECT * FROM `users` WHERE `companies`.`name` = "franco"
no such column: companies.name
De ce fait, cql décide d'aller plus loin dans la sécurité des types et de vérifier que les conditions sont du bon modèle, que les valeurs comparées sont du même type, que les modèles sont inclus dans la requête et plus encore, en s'assurant qu'une erreur d'exécution sera générée. ne pas être élevé.
https://compiledquerylenguage.readthedocs.io/en/latest/
Consultez cette section pour consulter les directives de contribution cql.
CQL est sous licence Mozilla Public License version 2.0.