mx-psi / ddsi

Repositorio para las prácticas de DDSI
GNU General Public License v3.0
0 stars 0 forks source link

Implementación y disparadores #5

Closed mx-psi closed 6 years ago

mx-psi commented 6 years ago

Este issue es de referencia para que cada uno pueda trabajar de forma independiente en la implementación de su subsistema y luego podamos integrarlo todo sin problema. Si tenéis alguna sugerencia o algo que afecte al desarrollo de la implementación del subsistema de otro comentadlo aquí.

Implementación de requisitos funcionales

Para la implementación cada uno implementa el/los requisitos funcionales que vaya a hacer en uno o más ficheros propios (entidades.py, productos.py, usuario.py, valoraciones.py....) que luego se incluirán en main.py donde se gestionan los comandos que pueden utilizarse. Dentro de esos ficheros se implementan los requisitos, cada uno como una función independiente.

Cada una de estas funciones se encarga del proceso completo de forma interactiva con la terminal, es decir, debe pedir todos los datos necesarios y encargarse de manejar todos los posibles errores para la interacción con la base de datos. Para la implementación de la interfaz del programa estamos usando Python Prompt Toolkit (si queréis usarlo tendréis que importarlo en vuestro módulo).

Cualquier función que interactúe con la base de datos debe tomar como argumento un cursor a la base de datos. En la documentación de sqlite3 hay ejemplos de cómo interaccionar con la base de datos a partir de un cursor.

Actualización: Cada módulo debe incluir un diccionario de comandos llamado comandos. Cada comando debe tener una docstring con una descripción breve de la funcionalidad para la ayuda.

Disparadores con PL/SQL

Para implementar los disparadores utilizamos SQLite Trigger. No me lo he leído entero pero la sintaxis es parecida (y el grupo de Antonio me ha confirmado que puede utilizarse).

Actualización: Deben añadirse al fichero triggers.sql.

mx-psi commented 6 years ago

He actualizado un par de cosas para hacer más fácil la implementación. Ya está implementado parcialmente en productos.py a modo de ejemplo

mroman42 commented 6 years ago

Hay funciones auxiliares que podrían ser llamadas desde varios módulos. Una leeProducto, por ejemplo. Creo que tiene sentido meterlas en sitio aparte.