Crear un CRUD básico
A lo largo de la vida de un proyecto, cuando creamos nuevas funcionalidades, a menudo necesitamos añadir nuevos recursos a nuestra aplicación. Estos recursos suelen requerir múltiples operaciones repetitivas, que hacemos una y otra vez, cada vez que definimos un nuevo recurso.
Imaginemos un escenario real, donde necesitamos exponer endpoints de CRUD's para 2 entidades, digamos Roles
y Locales
, y para cada entidad tendríamos que realizar varias operaciones, como sigue:
- Generar un módulo (carpeta) para mantener el código organizado y establecer límites claros (agrupando componentes relacionados).
- Generar una vista para definir rutas CRUD e implementar la lógica de negocio.
- Generar un modelo (clase) para representar la tabla de la base de datos.
- Generar Objetos de Transferencia de Datos (DTO) para definir cómo se enviarán los datos a través de la red y como se validarán.
- Generar esquemas (JSONSchema) para validar datos.
- Generar archivos y/o carpetas para utilizar lógica de negocio adicional, relacionada con el módulo.
... y que todo esto, mantenga una estructura organizada para tu proyecto.
Son muchos pasos...
generadores al rescate
Para ayudar a acelerar este proceso repetitivo, Callisto proporciona un generador que automágicamente crea todo el código boilerplate para ayudarnos a evitar hacer todo esto, y hacer la experiencia del desarrollador mucho más simple.
veamos:
ejecutamos el comando crud
, utilizando Poetry...
-
definir el nombre del módulo
-
definir el tipo de router a utilizar
-
definir el tipo de ORM
-
listo!
la salida será algo como:
creando la siguiente estructura de carpetas dentro de app/modules/
Nota
Para más información revisa el archivo tools/crud_gen.py
.
Tras bambalinas el generador utiliza Jinja2 y Questionary.
Routers
Callisto utiliza APIRouter para generar las vistas del módulo.
ORM
de momento, se utilizan los siguientes motores de Bases de Datos:
- MongoDB
MySQL- PostgreSQL
Lectura recomendada
Te recomendamos leer el apartado de: