Skip to content

5.0.0

Latest

Choose a tag to compare

@aaferna aaferna released this 12 Jan 04:29
· 3 commits to main since this release

Cambios Realizados

1. Gestión de Errores Personalizada

  • Añadida la clase DatabaseError para manejar errores específicos, con códigos y mensajes claros.
  • Los errores lanzados ahora incluyen información sobre el tipo de error, como:
    • VALIDATION_ERROR
    • UPDATE_ERROR
    • DELETE_ERROR
    • Entre otros.
  • Esto facilita la depuración y el manejo de errores en el sistema.

2. Validación de Entrada

  • Implementada la función validateJson para garantizar que solo se acepten datos en formato JSON (objetos).
  • Ahora las operaciones como dbInsert y dbUpdate validan la estructura del dato antes de realizar cualquier acción.
  • Se lanza un error si el dato no cumple con el formato esperado.

3. Soporte para Transacciones

  • Añadida la función transaction que permite agrupar múltiples operaciones en un solo bloque transaccional.
  • En caso de error durante la ejecución:
    • Se pueden implementar reversiones (rollback) para garantizar la consistencia de los datos.
  • Esto mejora la robustez del sistema en operaciones complejas.

4. Logs para Auditoría

  • Implementado un sistema de registro de auditoría que documenta todas las operaciones en el archivo audit.log.
  • Cada operación (inserción, actualización, eliminación, lectura) ahora genera una entrada en el log con los siguientes detalles:
    • Tipo de operación (e.g., INSERT, DELETE, UPDATE, GET_DATA).
    • Colección afectada.
    • Identificador único de la operación.
    • Fecha y hora del evento.

5. Refactorización de Funciones Existentes

  • Las funciones ahora utilizan:
    • incrementIndex para un manejo más seguro y eficiente de los índices.
    • validateIndex para sincronizar el índice con los datos existentes en la colección.
  • Se mejoró la legibilidad y modularidad del código para facilitar su mantenimiento.

6. Manejo Seguro del Sistema de Archivos

  • Uso del paquete proper-lockfile para evitar condiciones de carrera al manipular archivos críticos como .indx.
  • Se garantiza que las operaciones sobre índices sean atómicas, eliminando el riesgo de corrupción de datos en sistemas concurrentes.

7. Modularización y Reutilización

  • Separación de lógica en funciones específicas como:
    • incrementIndex para manejar índices.
    • logOperation para gestionar los registros de auditoría.
    • validateJson para asegurar que las entradas sean válidas.

Impacto en el Sistema

  • Robustez: Las validaciones y el manejo de errores reducen el riesgo de inconsistencias o corrupción de datos.
  • Auditoría: Los logs permiten rastrear y auditar todas las operaciones realizadas en el sistema.
  • Concurrencia: La manipulación segura de índices asegura que el sistema pueda escalar a múltiples usuarios concurrentes.
  • Escalabilidad: La implementación de transacciones abre las puertas a operaciones más complejas con mayor control.

Notas para el Usuario

  • Si ya tienes colecciones existentes, ejecuta validateIndex para sincronizar los índices con los datos actuales.
  • Los logs de auditoría se almacenan en ./data/audit.log. Revisa regularmente este archivo si necesitas analizar operaciones.