El día de ayer (sábado 27) se organizó un Super Happy Dev House.. y ya había pasado mucho tiempo desde la última vez que llegaba a un evento de este tipo.. en fin, decidimos ir Zeru y yo a trabajar en un pequeño proyecto para CalcImp, el cual llamaríamos CIPos (nuestra imaginación es inmensa, lo sé).. pues bien, CIPos será una terminal Punto de venta corriendo en web.. y para esto pensamos en aprender algo nuevo y fue que decidimos utilizar Play Framework con una BD local (SQLite) ..
Para empezar, ya habíamos descargado del framework y es relativamente fácil utilizarlo, se creó un proyecto y se subió a nuestro repo de código.. cada quien utilizó su editor preferiro y en el caso de zeru, utilizó eclipse.. yo me fui un poco más curioso y lo configuré para intelliJ ya que desde mucho tiempo atrás quería probar este IDE.
Nos familiarizamos rápido con la estructura de carpetas y mientras zeru se encargaba de la conexión a la BD, yo me encargaba de las rutas (URL’s) y el diseño del modelo para crear la primera tabla que sería de productos. Algo que falta explicar en la documentación de Play es que al utilizar sqlite, también es necesario agregar a las librerías del proyecto sqlite-jdbc-3.7.2.jar para lograr hacer la conexión a la BD.
Sobre la documentación del framework, podría decir que está completa más no hay muchos ejemplos que ayuden a comprender bien el ecosistema.. anteriormente el mapeo de la BD se hacía con JPA (en versiones anteriores del framework).. y ahora lo hacen con Avaje EBEAN .. y mientras buscaba como hacerlo de una manera, los resultados aparecían de otra por lo que encontrar la forma correcta de interactuar con la BD fue una pérdida de tiempo bastante grande.
También encontramos un BUG con la migración de scripts, ya que inicialmente al hacerse el primer llamado a la BD.. si la tabla no existe, el framework la crea mediante un script, solo que el script generado por el framework tiene un error al escribir de forma incorrecta la generación de un campo autoincremental con llave primaria.. entonces ejemplificando es lo siguiente:
Así lo genera el framework:
id INTEGER AUTOINCREMENT PRIMARY KEY |
Y la forma correcta debería de ser así:
id INTEGER PRIMARY KEY AUTOINCREMENT |
Luego que superamos lo de la generación de nuestra tabla, empezamos a crear las acciones y vistas para hacer CRUD .. igual, recuerdo que esto antes se podía hacer de forma automática utilizando un módulo llamado CRUD precisamente.. y esto nos generaba automáticamente las vistas para crear, editar, ver o borrar un registro.. en la última versión de Play este módulo ya no existe.. y aunque hay opciones para hacer scaffolding, decidimos hacer el proceso tradicional de generar MVC a mano.
Al final del día alcanzamos a tener todo nuestro controlador y sus acciones para la tabla de productos completo, tuvimos un par de problemas al iniciar con la configuración de la BD y como era de esperarse, también tendremos que aprender un poco sobre la forma en que se consulta la información utilizando EBEAN..