Sobre el proyecto
qbrs es un constructor de consultas SQL de tipo seguro para Rust que combina los beneficios de la verificación en tiempo de compilación con la flexibilidad de la construcción dinámica de consultas. A diferencia de muchos constructores que obligan a elegir entre seguridad estática y dinamismo en tiempo de ejecución, qbrs verifica las referencias de columnas y uniones en tiempo de compilación mediante una lista plana a nivel de tipo, mientras trata la acumulación de predicados como un vector en tiempo de ejecución. Esto permite a los desarrolladores agregar filtros o bucles de forma condicional sin necesidad de trampillas de escape como `.into_boxed()` o `.dynamic()`.
Las características clave incluyen:
- **Seguridad en tiempo de compilación**: Valida que las columnas referenciadas existen dentro del alcance actual de la consulta. Por ejemplo, referenciar una columna de una tabla que no ha sido unida resulta en un error de compilación.
- **Nulabilidad automática**: Deriva tipos `Option<T>` para columnas en el lado derecho de `LEFT JOIN` de forma automática, asegurando la corrección de tipos sin anotaciones manuales.
- **Resultados indexados por columna**: Las filas se decodifican por nombre de columna en lugar de posición, lo que hace que los cambios de esquema sean más seguros y el código más legible.
- **Soporte integral de SQL**: Admite `SELECT`, `INSERT`, `UPDATE`, `DELETE`, todos los tipos de uniones, `GROUP BY`, `HAVING`, agregados, `DISTINCT`, upserts, operaciones de conjunto (`UNION`, etc.), funciones de ventana, CTE y transacciones.
- **Gating de dialecto**: El dialecto de SQL es parte del tipo de consulta, lo que permite verificar capacidades (p. ej., soporte de `RETURNING`) en tiempo de construcción en lugar de en tiempo de renderización.
El proyecto se encuentra actualmente en etapas iniciales (v0.1.0/0.2.0) y está marcado explícitamente como **no listo para producción**. No es un ORM; no maneja el seguimiento de cambios, mapas de identidad o mapeo objeto-relacional. Para esas necesidades, se recomienda SeaORM. Para SQL puro con comprobaciones en tiempo de compilación, se sugiere sqlx. La capa de ejecución de qbrs está actualmente limitada a Postgres a través de `qbrs-sqlx`, aunque la renderización de MySQL y SQLite está soportada y probada en CI.
Las limitaciones notables incluyen la ausencia de alias de tablas, CTE recursivos, bloqueo de filas (`FOR UPDATE`) y agregados como funciones de ventana. La unión condicional de tablas requiere borrar tipos a `DynSelect`, que es una trampilla de escape estrecha. La biblioteca tiene una licencia dual bajo MIT o Apache-2.0.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.