gm-database v1.0.9
gm-database
Este paquete no es una base de datos, el paquete te ayuda a guardar información en archivos locales simulando una base de datos. Los archivos son procesados en JSON pero se almacenan en código binario no encriptado.
Antes de usar
Antes de poder usar este paquete, tienes que crear una carpeta llamada gm-database
en el primer nivel de tu proyecto, no recomendamos editar manualmente los archivos creados ya que podría fallar la conversión de binario a json al requerir estos archivos.
El paquete no retornara nunca un error, en caso de error retornará un objeto con 3 propiedades: {error: Boolean, code: Number, message: String}
La versión 1.0.3 usa el binario para guardar, la 1.0.4 lo guarda directamente como JSON
Métodos
checkDirectory(dir_name)
Verifica si una carpeta existe dentro de la carpeta principal.
createDirectory(dir_name)
Crea una carpeta dentro de la carpeta principal.
deleteDirectory(dir_name)
Elimina una carpeta y todos los archivos que contiene.
createFile(dir_name, file_name)
Crea un archivo con un objecto vacío dentro de una carpeta.
deleteFile(dir_name, file_name)
Elimina una archivo dentro de una carpeta.
updateFile(dir_name, file_name, data_object)
Actualiza las propiedades del archivo dentro de una carpeta.
rewriteFile(dir_name, file_name, data_object)
Actualiza todo el objeto del archivo.
createSingleFile(dir_name, file_name)
Crea un archivo compartido para guardar objetos que podrán ser buscados.
setSinglePage(dir_name, file_name, key, data_object)
Añade objetos a un archivo compartido.
findSinglePage(dir_name, file_name, key)
Busca objetos en un archivo compartido.
deleteSinglePage(dir_name, file_name, key)
Elimina objetos de un archivo compartido.
Plugins
plugins.expiringFiles
createStream(dir_name, file_name, time, key?)
Elimina un archivo al pasar cierto tiempo, introduce una key en caso de que el archivo sea compartido y solo se quiera eliminar un objeto de él.
fetchStreams()
Elimina todos los archivos que tendrían que ser eliminados, este método se ejecuta automáticamente cada hora.
const db = require('gm-database');
let directory = await db.checkDirectory('users'); // Busca la carpeta
if(directory) await db.createDirectory('users'); // Crea la carpeta
/* --------------------------- */
await db.deleteDirectory('users'); // Elimina la carpeta
/* --------------------------- */
let user = await db.getFile('users', 'user_1'); // Obtiene los datos del usuario 1
/*
{
name: 'Lucas',
last_names: ['Garcia', 'Sanchez'],
phone: '6271825828',
id: '0020273617a',
age: 18
}
*/
await db.updateFile('users', 'user_1', {name: 'Martín'}); // Actualiza solo el nombre
/*
{
name: 'Martín',
last_names: ['Garcia', 'Sanchez'],
phone: '6271825828',
id: '0020273617a',
age: 18
}
*/
await db.rewriteFile('users', 'user_1', {name: 'Lucía'}); // Actualiza todo el documento
/*
{
name: 'Lucía'
}
*/
/* --------------------------- */
await db.deleteFile('users', 'user_1'); // Elimina el documento
/* --------------------------- */
await db.createSingleFile('users', 'user_info'); // Prepara un archivo
await db.setSinglePage('users', 'user_names', '0020273617a', {name: 'Martín'}) // Guarda un dato en un archivo compartido con el id "0020273617a"
let user = await db.findSinglePage('users', 'user_names', '0020273617a'); // Busca un dato de un archivo compartido
/*
{
key: "0020273617a",
name: "Martín"
}
*/
await db.deleteSinglePage('users', 'user_names', '0020273617a'); // Elimina un dato de un archivo compartido
/* --------------------------- */
let ten_hours = 10 * 60 * 60 * 1000
await db.plugins.expiringFiles.createStream('users', 'user_1', ten_hours); // Elimina un archivo pasado cierto tiempo
await db.plugins.expiringFiles.fetchStreams() // Se buscan los archivos que se tienen que eliminar, este método se ejecuta automáticamente cada hora
await db.plugins.expiringFiles.createStream('users', 'user_names', ten_hours, '0020273617a'); // Si se añade un key se eliminará el dato de un archivo compartido