
PC Shop — AGOSTO, Semana 3-3 — #POST 3
Después de completar el CRUD persistente de PRODUCTOS, esta jornada se dedica al mantenimiento y organización de la capa de acceso a datos.
El objetivo no es añadir nuevas funcionalidades, sino revisar el código existente y mejorar únicamente aquello que aporta una ventaja concreta.
Arquitectura revisada:
Productos.pas
↓
TProducto
↓
Datos.pas
↓
FireDAC
↓
SQLite
Las operaciones persistentes permanecen centralizadas en Datos.pas:
- InsertarProducto
- ActualizarProducto
- EliminarProducto
- CargarProductos
Cambios realizados:

Se simplifica DataModuleCreate.
Se elimina la antigua comprobación visual de sqlite_schema y el ShowMessage.
Su responsabilidad queda reducida a:
abrir conexión
↓
garantizar PRODUCTOS
↓
terminar

Se elimina Vcl.Dialogs de Datos.pas.
La capa de persistencia deja de mostrar mensajes pertenecientes a la interfaz.

CargarProductos utiliza try/finally.
De esta forma qryListarProductos se cierra incluso si ocurre una excepción durante la lectura.

InsertarProducto pasa a devolver Boolean.
El criterio queda alineado:
INSERT → Boolean
UPDATE → Boolean
DELETE → Boolean
utilizando RowsAffected para determinar si SQLite ha realizado realmente la operación.

Productos.pas permanece independiente de FireDAC.
El formulario utiliza:
dmDatos.InsertarProducto(...)
dmDatos.ActualizarProducto(...)
dmDatos.EliminarProducto(...)
dmDatos.CargarProductos(...)
sin acceder directamente a TFDQuery o TFDConnection.

Se simplifica el flujo de errores de UPDATE.
Se utiliza un flujo más lineal:
operación
↓
¿falla?
├─ sí → recuperar estado + mensaje + Exit
└─ no → continuar
Decisión de mantenimiento:
No se renombra qryProductos porque el cambio sería principalmente cosmético y no justifica ampliar innecesariamente la refactorización.
Verificación final en Delphi 12.1:
CREATE

READ

UPDATE

DELETE

Cerrar/abrir aplicación
Resultado:
La aplicación mantiene el mismo comportamiento funcional, pero la capa de persistencia queda más coherente, aislada y preparada para futuras ampliaciones.
Competencias trabajadas:
- Delphi / Object Pascal
- FireDAC
- SQLite
- SQL
- RowsAffected
- Gestión de datasets
- try/finally
- Separación de responsabilidades
- Refactorización
- Mantenimiento de código
- Gestión de errores
- Git
Commit:
refactor(data): simplify persistence layer and standardize CRUD results
Repositorio:
https
://github.com/101aero/pcshopPB