npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

guardian-db

v0.1.11

Published

simple database

Downloads

1

Readme

guardian-db es un package que te permite trabajar con una base de datos de forma sencilla y persistente.
Contiene multiples metodos para facilitarte el uso de almacenar, recaudar y actualizar datos.

Importante / actualizacion

- Ahora tus datos no se eliminaran cada vez que llegues a actualizar guardian-db, por lo tanto se mantendran y podras trabajar con ellas cuando salgan futuras versiones de este package.
- Se arreglo el problema de compatibilidad con glitch.com.
- Se arreglo en problema de las funciones sumar y restar.
- En la carpeta principal de tu proyecto estara un archivo llamado guardian_db.json, por favor no eliminar este archivo a menos que quieras eliminar absolutamente todas las bases de datos.

Metodos:

  • crearDB
  • agregar
  • obtener
  • tiene
  • eliminar
  • datos
  • push
  • extract
  • sumar
  • restar
  • ordenar

Instalacion:

npm install guardian-db

Ejemplo del requerimiento del package:

const db = require('guardian-db');

crearDB(nombre)

Esta funcion te permite crear una especifica base de datos mediante un nombre, si el nombre de la base de datos que pusiste ya existia, lo que hara es devolver
los datos existentes, de lo contrario creara uno.
let niveles = new db.crearDB('niveles')

agregar(clave, valor)

Esta funcion te permite crear datos mediante una clave, tambien te permite actualizar datos existentes por nuevos.
Si quieres crear o actualizar propiedades especificas de un objeto, puedes usar el . seguido del nombre de la propiedad.
Esto retornara una promesa con los nuevos datos.
niveles.agregar('CDDC_', {xp: 0, nivel: 10}) // retorna {xp: 0, nivel: 10}
niveles.agregar('CDDC_.xp', 100) // retorna {xp: 100, nivel: 10}
niveles.agregar('MoDeR', 100) // retorna 100
niveles.agregar('MoDeR.datos.monedas', 200) // retorna {datos: {monedas: 200}}
niveles.agregar('MoDeR.datos.banco', 1000) // retorna {datos: {monedas: 200, banco: 1000}}
niveles.agregar('RatSageM', []) // retorna []

obtener(clave)

Esta funcion te permite obtener los datos de una clave.
Tambien te permite obtener datos de una propiedad especifica usando el . seguido del nombre de la propiedad.
Esto retornara una promesa con los datos que se obtuvo, de lo contrario retornara null.
niveles.obtener('CDDC_') // retorna {xp: 100, nivel: 10}
niveles.obtener('CDDC_.nivel') // retorna 10
niveles.obtener('MoDeR.datos.banco') // retorna 1000

tiene(clave)

Esta funcion te permite verificar si existe una clave en la base de datos.
Tambien te permite verificar una propiedad especifica usando el . seguido del nombre de la propiedad.
Esto retornara true si existe, de lo contrario retornara false.
niveles.tiene('CDDC_') // retorna true
niveles.tiene('Mario') // retorna false
niveles.tiene('CDDC_.monedas') // retorna false
niveles.tiene('MoDeR.datos.monedas') // retorna true

eliminar(clave)

Esta funcion te permite eliminar una clave de la base de datos.
Tambien te permite eliminar una propiedad especificas usando el . seguido del nombre de la propiedad.
Esto retornara true si se elimino correctamente, de lo contrario retornara false.
niveles.eliminar('CDDC_.xp') //retorna true
niveles.eliminar('MoDeR.datos.banco') //retorna true
niveles.eliminar('Mario') //retorna false


niveles.tiene('MoDeR.datos.banco') // retorna false porque lo eliminamos
niveles.tiene('CDDC_.xp') // retorna false porque lo eliminamos

niveles.obtener('CDDC_') // retorna {nivel: 10}
niveles.obtener('MoDeR.datos') // retorna {monedas: 200}

datos()

Esta funcion regresa todas las claves con su respectivo valor de una base de datos.
Esto retornara una promesa con todos los datos.
niveles.datos()

// retorna
{
  "CDDC_": {
    nivel: 10
  },
  "MoDeR": {
    "datos": {
      "monedas": 100
    }
  },
  "RatSageM": []
}

push(clave, valor)

Esta funcion te permite agregar un elemento a un array.
Tambien te permite agregarlo en una propiedad especifica usando el . seguido del nombre de la propiedad.
Esto retornara una promesa con el array actualizado, de lo contrario si la ruta donde quieres agregarlo no es un array, retornara "Array no encontrado".
niveles.push('RatSageM', 'manzana') // retorna ["manzana"]

niveles.agregar('MGstar', {items: ["platano"]}) // retorna {items: ["platano"]}

niveles.push('MGstar', 'sandia') // retorna "Array no encontrado."
niveles.push('MGstar.items', 'sandia') // retorna ["platano", "sandia"]

extract(clave, valor)

Esta funcion te permite remover un elemento de un array.
Tambien te permite remover un elemento en una propiedad especifica usando el . seguido del nombre de la propiedad.
Esto retornara una promesa con el array actualizado, si la ruta donde quieres agregarlo no es un array, retornara "Array no encontrado" y si el array no contiene el valor que pusiste, retornara "elemento {nombre_item} no encontrado"
niveles.extract('MGstar', 'platano') // retorna "Array no encontrado."
niveles.extract('MGstar.items', 'platano') // retorna ["sandia"]
niveles.extract('MGstar.items', 'durazno') // retorna "elemento durazno no encontrado."

sumar(clave, numero)

Esta funcion te permite sumar una cantidad especifica a una clave, el valor de la clave debe ser un numero.
Tambien te permite sumarlo en una propiedad especifica usando el . seguido del nombre de la propiedad.
Esto retornara una promesa con el valor actualizado, de lo contrario retornara "Numero no encontrado."
niveles.agregar('Nelson', 20) //retorna 20
niveles.sumar('Nelson', 25) //retorna 45

niveles.agregar('Sun.datos.monedas', 10) // retorna {datos: {monedas: 10}}
niveles.sumar('Sun.datos', 90) //retorna "Numero no encontrado."
niveles.sumar('Sun.datos.monedas', 90) // retorna {datos: {monedas: 100}}

restar(clave, numero)

Esta funcion te permite restar una cantidad especifica a una clave, el valor de la clave debe ser un numero.
Tambien te permite restarlo en una propiedad especifica usando el . seguido del nombre de la propiedad.
Esto retornara una promesa con el valor actualizado, de lo contrario retornara "Numero no encontrado."
niveles.restar('Nelson', 40) //retorna 5
niveles.restar('Sun.datos', 100) //retorna "Numero no encontrado."
niveles.restar('Sun.datos.monedas', 100) // retorna {datos: {monedas: 0}}

ordenar(clave, valor)

Esta funcion te permite ordenar los valores de una clave de forma descendente.
Tambien te permite ordenar valores tomando como punto referencial una propiedad especifica usando el . seguido del nombre de la propiedad.
Clave y valor reciben dos tipos de valores, un string (cadena de texto) y un booleano (false), el false lo podemos usar cuando se requiera ordenar valores que no sean propiedades de algun objeto  (independientemente de la clave), esto mismo tambien puede aplicarse a claves.
Esto retornara una promesa con un array mostrando los datos ordenados, si la ruta que especificaste no existe, retornara null y si los valores que se ordenaran no son numeros, retornara "Los valores no son numeros."
//ejemplo_1

let economia_db = new db.crearDB('economia')
economia_db.agregar('CDDC_', 100) //retorna 100
economia_db.agregar('MoDeR', 40) //retorna 40
economia_db.agregar('ratsagem', 320) //retorna 320

economia_db.ordenar(false, false) //retorna [{clave: 'ratsagem', valor: 320}, {clave: 'CDDC_', valor: 100}, {clave: 'MoDeR', valor: 40}]

//ejemplo_2

let economia_db = new db.crearDB('economia')
economia_db.agregar('CDDC_', {monedas: 100}) //retorna {monedas: 100}
economia_db.agregar('MoDeR', {monedas: 40)} //retorna {monedas: 40)
economia_db.agregar('ratsagem', {monedas: 320)} //retorna {monedas: 320)

economia_db.ordenar(false, "monedas") //retorna [{clave: 'ratsagem', valor: {monedas: 320)}, {clave: 'CDDC_', valor: {monedas: 100}}, {clave: 'MoDeR', valor: {monedas: 40)}]

//ejemplo_3

let economia_db = new db.crearDB('economia')

let usuarios = {
  CDDC_: {monedas: 10, medallas: 15},
  moder: {monedas: 50, medallas: 20},
  ratsagem: {monedas: 25, medallas: 5}
}
economia_db.agregar('servidor.datos', usuarios) 
//esto retorna:
{
  'datos': {
    'CDDC_': {
      'monedas': 10,
      'medallas': 15
    },
    'moder': {
      'monedas': 50,
      'medallas': 20
    },
    'ratsagem': {
      'monedas': 25,
      'medallas': 5
    }
  }
}


economia_db.ordenar('servidor.datos', "medallas") //lo ordenaremos por el numero de medallas
//esto retorna
[
  {clave: 'moder', valor: {monedas: 50, medallas: 20}},
  {clave: 'CDDC_', valor: {monedas: 10, medallas: 15}},
  {clave: 'ratsagem', valor: {monedas: 25, medallas: 5}}
]

Ejemplo usando algunas funciones:

const db = require('guardian-db');
let estadisticas = new db.crearDB('niveles');

let randomXP = Math.floor(Math.random() * 60) + 1;

if(!estadisticas.tiene('CDDC_')) {
  estadisticas.agregar('CDDC_', {xp: 0, nivel: 1});
}

estadisticas.obtener('CDDC_').then(datos => {
  if((randomXP + datos.xp) >= 50) {
    estadisticas.agregar('CDDC_', {xp: 0, nivel: datos.nivel + 1}).then(nuevos_datos => {
      console.log(`CDDC_ subio al nivel ${nuevos_datos.nivel}!`)
    }).catch(err => console.log(err))
  }
  else{
    estadisticas.sumar('CDDC_.xp', randomXP)
  }
}).catch(err => console.log(err))


/////////////////////////////////////////////////////


const db = require('guardian-db');
let escuela = new db.crearDB('alumnos');

escuela.agregar('CDDC_', {edad: 20, profesion: ['programador']});
escuela.agregar('MoDeR', {edad: 18, profesion: ['programador']});
escuela.agregar('RatSageM', {edad: 25, profesion: ['maestro']});


escuela.datos().then(alumnos => {
  for(var alumno in alumnos) {
    if(alumnos[alumno].profesion.includes('programador')) {
      escuela.push(`${alumno}.profesion`, 'javascript');
      continue;
    }
    escuela.eliminar(`${alumno}`)
  }
}).catch(error => console.log(error))


//resultado final:
{
  "CDDC_": {
    "edad": 20,
    "profesion": ["programador", "javascript"]
  },
  "MoDeR": {
    "edad": 18,
    "profesion": ["programador", "javascript"]
  }
}

/////////////////////////////////////////////////////

const db = require('guardian-db');
let mercado_db = new db.crearDB('mercado');

let nombres = ['manzana', 'melocoton', 'sandia', 'lechuga']

mercado_db.agregar('frutas', nombres); //esto retorna ['manzana', 'melocoton', 'sandia', 'lechuga']

mercado_db.obtener('frutas').then(f => {
  for(var x = 0; x < f.length; x++) {
    if(f[x] == 'lechuga') {
      mercado_db.extract('lechuga') //esto retorna ['manzana', 'melocoton', 'sandia']
      console.log(`La ${f[x]} no es una fruta, acabo de removerlo.`)
      break;
    }
  }
})



//resultado final:
{
  "frutas": ["manzana", "melocoton", "sandia"]
}

/////////////////////////////////////////////////////


const db = require('guardian-db');
let economia_db = new db.crearDB('economia')

let usuarios = {
  CDDC_: {monedas: 10, medallas: 15},
  moder: {monedas: 50, medallas: 20},
  ratsagem: {monedas: 25, medallas: 5}
}

economia_db.agregar('servidor.datos', usuarios) 

economia_db.ordenar('servidor.datos', "monedas").then(nuevos => {
  let ranking = []
  for(var x = 0; x < nuevos.length; x++) {
    ranking.push(`rank #${parseInt(x+1)} | usuario: ${nuevos[x].clave} | monedas: ${nuevos[x].valor.monedas} | medallas: ${nuevos[x].valor.medallas}\n`)
  }
})


/*resultado:
rank #1 | usuario: moder | monedas: 50 | medallas: 20
rank #2 | usuario: ratsagem | monedas: 25 | medallas: 5
rank #3 | usuario: CDDC_ | monedas: 10 | medallas: 20
*/