Open tolemac opened 7 years ago
Una cosa más.
Estaba implementándolo de forma que el objeto builder va guardando la configuración que se le va indicando con las instrucciones .AddJoin
, AddColumn
, ...
Y por último un Generator
sería el que viendo la configuración en el builder, y teniendo en cuenta el dialecto, generaría el SQL final.
Al pensar en añadir soporte para texto ya estaba empezando a dudar, lo mismo debería ir traduciendo conforme se va configurando el builder y así aceptar texto sería algo más fácil.
Además el soporte para texto rompe un poco el soporte para cualquier dialecto ... lo mismo lo de soportar texto no es un buen enfoque.
Bueno, creo que este hace exactamente lo que yo quiero:
https://github.com/DomanyDusan/lambda-sql-builder
Le faltan un par de cosas que intentaré implementarle.
La idea inicial era construir consultas SQL de forma programática haciendo uso de expresiones de forma que no haya que escribir nombres de campos como literales protegiéndonos así de fallos a la hora de cambios en la base de datos o el modelo.
Lo primero que hice fue escribir un snippet con lo que sería más o menos la sintaxis para crear consultas. Escribí algo así:
Me metí en materia y según iba escribiendo código hice algunas modificaciones. Este es el código del test con el que iba funcionando:
(Código en el branch "SQL" de este repositorio)
El pasado sábado en la #dosconf ví a @panicoenlaxbox usar algo parecido pero sin el uso de extensiones y al preguntarle me comentó que conocía un repo de @eiximenis donde se hacía algo parecido a lo que yo quería.
Estuve mirando ambos cogiendo ideas de uno y otro, MySqlSentenceBuilder de @eiximenis se adapta mejor a la idea que yo tenía sobre lo que quería hacer, pero cuando me puse a estudiar un poco SqlSentence de @panicoenlaxbox me dí cuenta de que lo mismo sería algo bueno soportar texto ... No ser la forma principal de escribir las sentencias sino como en caso extremo poder añadir cualquier cosa con texto ... Siempre puede haber una consulta donde necesitas añadir alguna ñapa que no puedes generar con el builder en cuestión...
Ahí tengo una duda importante, hacer que el builder soporte texto para cubrir situaciones extremas o no aceptar texto y cuando necesites hacer una consulta que no puedes generar con el builder hacerla desde cero en texto.
Bien enumero la lista de requerimientos que me gustaría cumplir:
Bueno, creo que es suficiente. Agradecería cualquier comentario o consejo.