jesscode-lib v1.8.6
This is my first npm package
Español:
Este es un paquete de npm creado con multiples funcionalidades. Su función principal es el manejo de base de datos. cuenta con 3 motores de guardado de base de datos (v1, v2, v3);
Comenzando:
Para empezar a usar el paquete debemos requerirlo (nota: solo está hecho para nodejs no puede usarse la sentencia "import" por ahora);
const lib = require('jesscode-lib'); //requerimos la librería
const { Database, setRoot } = lib; //importamos el servicio de base de datos y la función "setRoot" que se encarga de establecer la ruta raíz de donde serán guardados los archivos locales; !!ES OBLIGATORIO USAR EL MODULO 'path' de nodejs: require('path');
const path = require('path');
setRoot(path.join(__dirname, 'path-to-root'));
const db = new Database('name-of-the-database', /*options =>*/ {
secret: process.env('SECRET_KEY'), //clave secreta para el cifrado de la base de datos si se desde la versión 2 en adelante
engineVersion: 'v2' //versión de cifrado de datos (extension) [v1 = .json, v2 = .libson, v3 = .pjson]
});
Índice:
{
"clave": "string",
"clave2": [],
"clave3": true
}
LIBSON engine v2:
.%%%#!
.+a_n4h%e%so%a_t3p4 //clave
.=s%t%v%c_ie4b%hst4g5mr4k%g%q%n4 //valor
PJSON engine v3:
[
</a_n4hesoa_t3p4> |o| </stvc_ie4bhst4g5mr4kgqn4> <!--clave valor-->
]
//versiones get
db.get('clave') //v1 => "string"
db.get('clave') //v2 => "valor-desencryptado";
db.get('clave') //v3 => "valor-decodificado";
db.set('clave', 'valor'); //guarda un valor en la base de datos
db.add('clave', 'valor'); //sumamos una cantidad a un valor en la base de datos
db.substract('clave', 'valor'); //restamos una cantidad a un valor en la base de datos
db.extract('clave', 'valor'); //extraemos un elemento de un array en la base de datos
db.push('clave', 'valor'); //agregamos un elemento a un array en la base de datos
db.remove('clave'); //eliminamos una clave de la base de datos
db.clear(); //eliminamos todo el contenido de la base de datos
db.delete(); //eliminamos la base de datos
//para escuchar eventos usamos el método "on"
db.on('error', (err) => {
console.log(err);
}); //aqui escuchamos el evento "error"
db.on('create', () => {
console.log('base de datos creada');
}); //aqui escuchamos el evento "create"
db.on('write', (data) => {
console.log(data);
}); //aqui escuchamos el evento "write"
Por qué los eventos?
Los eventos son una forma de notificar a los usuarios de una base de datos cuando se produce un cambio en ella. Por ejemplo, cuando se crea una base de datos, se produce un evento "create" con el objeto de la base de datos.
Hice estos eventos porque muchas veces cometemos errores y los eventos pueden ayudarnos a revertirlos. Por ejemplo en el caso de eliminar toda la informacion de la base de datos con db.clear(), se produce un evento "clear" y nos pasa como valor la información que fue eliminada. dicha información podemos manejarla en caso de querer revertir el cambio.
He agregado un método que lo hace muy fácil y lo mejor de todo es que es automático. A continuación Método trash()
Método trash()
El método trash() es una función que nos permite guardar la información "basura" que se ha eliminado con los métodos extract(), clear(), remove() y delete()
para usar el método trash basta decirle a la base de datos que use el método:
db.use('trash');
Así cada vez que eliminemos información esta ira a la "papelera de reciclaje" de donde podemos restaurar la información muy facilmente. Para restaurar la información basta usar la herramienta "restore"
db.restore();
Cabe destacar que este método en la version 1 y 2 sobreescribe la información actual por la antigua. Ya en la versión 3 (v3) fusiona ambas informaciones, sin embargo, si una clave tiene un valor diferente se sobreescribira, a excepción de objetos y arreglos (Arrays). Considera listarlos en las opciones que veremos a continuación:
db.restore({
merge: true, //solo en la version 3. merge: true => fusiona ambas informaciones, merge: false => sobreescribe la información actual por la antigua
ignoreKeys: [], //solo en la version 3. Aquí definimos las claves que no se sobreescribiran
});
Este método utiliza cifrado para no filtrar la información en texto plano. por lo que no se podrá acceder a la información "basura" sin antes autenticar el usuario.
para ello pasamos la informacion al user 'trash':
db.use('trash', {
user: 'admin',
password: 'admin123',
timeOfClear: '24h' // tiempo que permanecerá la información en la papelera de reciclaje por defecto es 24h
}); //si no se especifica el usuario y la contraseña se utilizan los valores por defecto, sucede lo mismo con restore()
db.restore( /*opciones (solo v3)*/{}, /*Autenticación*/{
user: 'admin',
password: 'admin123'
}); //se recomienda altamente tener dichos valores en variables de entorno
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago