Originalmente parte de BaDaaS, CQL permite la persistencia y consulta de objetos de forma fácil y segura.
Está construido sobre gorm, una biblioteca que en realidad proporciona la funcionalidad de un ORM: mapear objetos a tablas en la base de datos SQL. Si bien gorm hace bien este trabajo con su migración automática, realizar consultas sobre estos objetos es algo limitado, lo que nos obliga a escribir consultas SQL directamente cuando son complejas. CQL busca abordar estas limitaciones con un sistema de consulta que:
Idioma | Consulta |
---|---|
SQL | SELECCIONAR ciudades.* DE ciudades INNER JOIN países activados países.id = ciudades.país_id Y países.nombre = "Francia" DONDE ciudades.nombre = "París" |
GORM | db.Donde( "ciudades.nombre =?", "París", ).Se une( "País", db.Donde( "País.nombre =?", "Francia", ), ).Buscar(&ciudades) |
CQL | cql.Query[modelos.Ciudad]( base de datos, condiciones.Ciudad.Nombre.Is().Eq("París"), condiciones.Ciudad.País( condiciones.País.Nombre.Is().Eq("Francia"), ), ).BuscarUno() |
Es cierto que su objetivo parece ser el mismo:
API DAO 100 % segura para tipos sin interfaz{}
Aunque gorm-gen proporciona una API más estructurada que gorm para realizar consultas, proporciona métodos como:
Where ( conds ... gen . Condition ) IUserDo
Podemos ver en estas firmas que, por ejemplo, el método Where recibe parámetros de tipo gen.Condition. De esta forma se podrían mezclar condiciones de diferentes modelos sin generar un error de compilación:
u := query . User
c := query . Company
user , err := u . Where ( c . Name . Eq ( "franco" )). First ()
lo que generaría un error de ejecución durante la ejecución del SQL generado:
SELECT * FROM `users` WHERE `companies`.`name` = "franco"
no such column: companies.name
Debido a esto, cql decide ir más allá en seguridad de tipos y verificar que las condiciones sean del modelo correcto, que los valores comparados sean del mismo tipo, que los modelos estén incluidos en la consulta y más, asegurando que se producirá un error de tiempo de ejecución. no ser levantado.
https://compiledquerylenguage.readthedocs.io/en/latest/
Consulte esta sección para ver las pautas de contribución de cql.
CQL tiene la licencia pública de Mozilla, versión 2.0.