Este sistema permite gestionar colecciones y datos almacenados en archivos locales mediante Node.js. Es ideal para aplicaciones ligeras o prototipos que no requieren una base de datos completa.
- Node.js instalado en tu sistema.
- Una carpeta base donde se almacenarán los datos (
./data/por defecto).
Ejecuta el siguiente comando para instalar los paquetes necesarios:
npm install proper-lockfileFunción: dbCreateCollection(collection, store)
- Descripción: Crea una nueva colección (directorio) para almacenar datos.
- Parámetros:
collection(string): Nombre de la colección.store(string): Ruta base para almacenar los datos (opcional, por defecto./data/).
- Ejemplo:
await dbCreateCollection('usuarios');
Función: dbInsert(dataInsert, collection, store)
- Descripción: Inserta un nuevo dato en una colección.
- Parámetros:
dataInsert(object): Objeto JSON que se desea insertar.collection(string): Nombre de la colección.store(string): Ruta base para almacenar los datos (opcional).
- Ejemplo:
const nuevoUsuario = { nombre: 'Juan', edad: 30 }; const resultado = await dbInsert(nuevoUsuario, 'usuarios'); console.log(resultado); // { id: 1, filePath: './data/usuarios/1.json' }
Función: dbUpdate(dataInsert, id, collection, store)
- Descripción: Actualiza un dato existente añadiendo nueva información al archivo.
- Parámetros:
dataInsert(object): Objeto JSON con los nuevos datos.id(number): ID del dato a actualizar.collection(string): Nombre de la colección.store(string): Ruta base para almacenar los datos (opcional).
- Ejemplo:
const actualizacion = { ciudad: 'Santiago' }; const resultado = await dbUpdate(actualizacion, 1, 'usuarios'); console.log(resultado); // { id: 1, filePath: './data/usuarios/1.json' }
Función: dbGetData(id, collection, store)
- Descripción: Obtiene los datos de un archivo específico.
- Parámetros:
id(number): ID del dato.collection(string): Nombre de la colección.store(string): Ruta base para almacenar los datos (opcional).
- Ejemplo:
const usuario = await dbGetData(1, 'usuarios'); console.log(usuario); // { nombre: 'Juan', edad: 30, ciudad: 'Santiago' }
Función: dbDeleteData(id, collection, store)
- Descripción: Elimina un archivo de datos específico.
- Parámetros:
id(number): ID del dato a eliminar.collection(string): Nombre de la colección.store(string): Ruta base para almacenar los datos (opcional).
- Ejemplo:
const resultado = await dbDeleteData(1, 'usuarios'); console.log(resultado); // { id: 1, deleted: true }
Función: validateIndex(collection, store)
- Descripción: Sincroniza el índice de la colección con los datos existentes.
- Parámetros:
collection(string): Nombre de la colección.store(string): Ruta base para almacenar los datos (opcional).
- Ejemplo:
await validateIndex('usuarios');
Función: transaction(operations)
- Descripción: Ejecuta un conjunto de operaciones como una transacción. Si ocurre un error, permite revertir los cambios.
- Parámetros:
operations(array): Arreglo de funciones asíncronas a ejecutar.
- Ejemplo:
await transaction([ () => dbInsert({ nombre: 'Pedro' }, 'usuarios'), () => dbUpdate({ ciudad: 'Lima' }, 1, 'usuarios') ]);
Todas las operaciones generan entradas en el archivo audit.log, ubicado en ./data/. Cada entrada incluye:
- Fecha y hora.
- Tipo de operación.
- Detalles de la operación (colección, ID, etc.).
- Asegúrate de que la carpeta base (
./data/) sea accesible por la aplicación. - Los datos se almacenan en formato JSON y cada archivo representa un registro.
- Usa
validateIndexperiódicamente para evitar inconsistencias en el índice.
¿Dudas o problemas? ¡Estoy para ayudarte! 🚀