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

klauz-db

v0.5.2

Published

Um banco de dados simples, para aplicações com um grau menor de complexidade

Downloads

464

Readme

KlauzDB NPM version

KlauzDB é um banco de dados orientado a Collections projetado para oferecer uma solução leve e eficiente para a persistência de dados locais. Utilizando arquivos .json como seu meio de armazenamento, ele permite que desenvolvedores manipulem dados estruturados de maneira intuitiva e acessível.

Com suporte a operações CRUD (Criar, Ler, Atualizar e Deletar), o sistema permite a categorização de dados em coleções, facilitando a realização de consultas de forma ágil e adaptável. A estrutura em JSON garante que os dados sejam facilmente legíveis e interoperáveis com diversas linguagens de programação.

Ideal para aplicações que exigem uma solução simples e eficaz de armazenamento, este banco de dados é perfeito para protótipos, projetos de pequeno a médio porte, testes automatizados e ambientes de desenvolvimento, proporcionando agilidade no gerenciamento de informações.

🌱 Instalação

# instalação local (recomendado)
npm install klauz-db --save

Instalação via yarn: yarn add klauz-db

🏗️ Usabilidade

No começo da sua aplicação, importe o pacote "klauz-db" e defina o path principal para armazenamento dos dados:

const { KlauzDB } = require('klauz-db')

const kz = new KlauzDB({
    path: '{db_path}'
})

ES6:

import { KlauzDB } from 'klauz-db'

const kz = new KlauzDB({
    path: '{db_path}'
})

Feito isso, você já pode criar suas Collections.

📖 Documentação

KlauzDB expõe apenas uma função:

  • createCollection

createCollection()

Habilita uma nova instância Collection, e cria seu arquivo .json para persistência dos dados.

Syntax

kz.createCollection(nomeCollection)

Parâmetros

nomeCollection: stringNome utilizado para criação de uma nova Collection e seu arquivo de persistência de dados;

Retorno

Instância própria da Collection, habilitando acesso as funções de banco de dados;

Exemplo

const kz = new KlauzDB({
    path: './db'
})

const collection = kz.createCollection('coll-teste')

console.log(collection.information)
// Resultado:
    {
        "collection_name": "coll-teste",
        "created_at": "2024-08-25T22:41:57.416Z",
        "last_interaction": "2024-08-25:41:57.416Z",
    }
//

Com sua Collection criada agora você já tem acesso as seguintes funções de db:

.add()
.addMany()
.update()
.delete()
.findAll()
.find()
.reset()

add

Adiciona um novo objeto dentro da Collection.

Syntax

collection.add(valor)

Parâmetros

valor: { key: value } (obrigatório)Objeto chave-valor utilizado para inserir um único registro dentro da Collection;

Retorno

Objeto adicionado já com as novas propriedades criadas pelo banco de dados;

Exemplo

const output = collection.add({
    nome: 'User_1',
    admin: true
})

console.log("output: ", output);
// Resultado:
    {
        "nome": "User_1",
        "admin": true
        "_zid": 1
    }
//

addMany

Adiciona um novo array de objetos dentro da Collection.

Syntax

collection.addMany(valor)

Parâmetros

valor: [{ key: value }, { key: value }] (obrigatório)Array utilizado para inserir diversos registros dentro da Collection;

Retorno

Array de objetos adicionados já com as novas propriedades criadas pelo banco de dados;

Exemplo

const output = collection.addMany([
    {
        nome: 'User_1',
        admin: true
    },
    {
        nome: 'User_2',
        admin: false
    }
])

console.log("output: ", output);
// Resultado:
    [
        {
            "nome": "User_1",
            "admin": true,
            "_zid": 1
        },
        {
            "nome": "User_2",
            "admin": false,
            "_zid": 2
        }
    ]
//

findAll

Retorna todos os dados contidos dentro da Collection.

Syntax

const optionsFindAll = {
    hideInfo: Array<string>
}
collection.findAll(optionsFindAll?)

Parâmetros

optionsFindAll.hideInfo: Array<string> (opcional)Array contendo as informações que necessita esconder do retorno da função.

Retorno

Todos os objetos persistidos na Collection;

Exemplo

// Adicionando dados
collection.addMany([
    {
        nome: 'User_1',
        admin: false
    },
    {
        nome: 'User_2',
        admin: false
    }
])


// Consultando dados

// Sem hideInfo
const output1 = collection.findAll()

console.log("output1", output1);
// Resultado:
    [
        {
            "nome": "User_1",
            "admin": false,
            "_zid": 1
        },
                {
            "nome": "User_2",
            "admin": false,
            "_zid": 2
        }
    ]
//


// Com hideInfo
const output2 = collection.findAll({
    hideInfo: ['admin'] // Esconde as informações indicadas do retorno;
})

console.log("output2", output2);
// Resultado:
    [
        {
            "nome": "User_1",
            "_zid": 1
        },
        {
            "nome": "User_2",
            "_zid": 2
        }
    ]
//

find

Retorna dados específicos que estão contidos na Collection.

Syntax

const optionsFind = {
    where: (obj) => {},
    hideInfo?: Array<string>
}
collection.find(optionsFind)

Parâmetros

optionsFind.where: function(obj) {} (obrigatório)Função callback que recebe como parâmetro os objetos contidos na Collection.Seu retorno deve ser os objetos que serão consultados; optionsFind.hideInfo: Array<string> (opcional)Array contendo as informações que necessita esconder do retorno da função.

Retorno

Objetos persistidos na Collection;

Exemplo

// Adicionando dados
collection.addMany([
    {
        nome: 'User_1',
        admin: true
    },
    {
        nome: 'User_2',
        admin: false
    },
        {
        nome: 'User_3',
        admin: false
    }
])


// Consultando dados

//Syntax Javascript antiga
const antigo = collection.find({
    where: function(obj) {
        if (obj.admin === true) {
            return obj
        }
    }
})

//Syntax Javascript moderna (recomendado)
const moderno = collection.find({
    where: obj => obj.admin === true
})

// Syntax Typescript:
// Utiliza Generics para habilitar a tipagem dos objetos, incluindo a propriedade '_zid' como padrão.
type User = { nome: string, admin: boolean };
const typescript = collection.find<User>({
    where: obj => obj.admin === true
})

console.log("antigo", antigo);
console.log("moderno", moderno);
console.log("typescript", typescript);
// Resultado:
    [
        {
            "nome": "User_1",
            "admin": true,
            "_zid": 1
        }
    ]
//

const output1 = collection.find({
    where: obj => obj._zid > 2
})

console.log("output1", output1);
// Resultado:
    [
        {
            "nome": "User_3",
            "admin": false,
            "_zid": 3
        }
    ]
//

const output2 = collection.find({
    where: obj => obj.admin === false,
    hideInfo: ['admin', '_zid']
})

console.log("output2", output2);
// Resultado:
    [
        {
            "nome": "User_2",
        },
        {
            "nome": "User_3",
        }
    ]
//

update

Altera um ou mais objetos dentro da Collection.

Syntax

const optionsUpdate = {
    where: (obj) => {},
    values: { key: value }
}
collection.update(optionsUpdate)

Parâmetros

optionsUpdate.where: function(obj) {} (obrigatório)Função callback que recebe como parâmetro os objetos contidos na Collection.Seu retorno deve ser os objetos que serão atualizados; optionsUpdate.values: { key: value } (obrigatório)Objeto chave-valor com os novos valores a serem atualizados;

Retorno

Array de objetos já com as novas alterações;

Exemplo

// Adicionando dados
collection.addMany([
    {
        nome: 'User_1',
        admin: false
    },
    {
        nome: 'User_2',
        admin: false
    }
])


// Alterando dados

// JavaScript:
const output1 = collection.update({
    where: obj => obj.nome === 'User_1',
    values: { admin: true }
})


// Typescript:
type User = { nome: string, admin: boolean }
const output2 = collection.update<User>({
    where: (obj) => obj._zid === 1,
    values: { admin: true }
})


console.log("output1: ", output1);
console.log("output2: ", output2);
// Resultado:
    [
        {
            "nome": "User_1",
            "admin": true,
            "_zid": 1
        }
    ]
//


// Update inserindo nova informação
const output3 = collection.update({
    where: obj => obj.nome === 'User_2',
    values: { idade: 20 }
})

console.log("output3: ", output3);
// Resultado:
    [
        {
            "nome": "User_2",
            "admin": false,
            "idade": 20,
            "_zid": 2
        }
    ]
//

delete

Remove um ou mais objetos da Collection.

Syntax

const optionsDelete = {
    where: (obj) => {}
}
collection.delete(optionsDelete)

Parâmetros

optionsDelete.where: function(obj) {} (obrigatório)Função callback que recebe como parâmetro os objetos contidos na Collection.Seu retorno deve ser os objetos que serão removidos;

Retorno

Não possui retorno;

Exemplo

// Adicionando dados
collection.addMany([
    {
        nome: 'User_1',
        admin: false
    },
    {
        nome: 'User_2',
        admin: false
    },
    {
        nome: 'User_3',
        admin: false
    }
])


// Deletando dados

console.log("collection.findAll(): ", collection.findAll());
// Consulta antes:
    [
        {
            "nome": "User_1",
            "admin": false,
            "_zid": 1
        },
        {
            "nome": "User_2",
            "admin": false,
            "_zid": 2
        },
        {
            "nome": "User_3",
            "admin": false,
            "_zid": 3
        }
    ]
//


// JavaScript:
collection.delete({
    where: obj => obj.nome === 'User_1'
})


// Typescript:
type User = { nome: string, admin: boolean };
collection.delete<User>({
    where: obj => obj._zid === 1
})


console.log("collection.findAll(): ", collection.findAll());
// Consulta depois:
    [
        {
            "nome": "User_2",
            "admin": false,
            "_zid": 2
        },
        {
            "nome": "User_3",
            "admin": false,
            "_zid": 3
        }
    ]
//

reset

Apaga todos os dados inseridos na Collection.

Syntax

collection.reset()

Retorno

Não possui retorno;

Exemplo

// Adicionando dados
collection.addMany([
    {
        nome: 'User_1',
        admin: false
    },
    {
        nome: 'User_2',
        admin: false
    }
])


// Resetando os dados

console.log("collection.findAll(): ", collection.findAll());
// Consulta antes:
    [
        {
            "nome": "User_1",
            "admin": false,
            "_zid": 1
        },
        {
            "nome": "User_2",
            "admin": false,
            "_zid": 2
        }
    ]
//

collection.reset()

console.log("collection.findAll(): ", collection.findAll());
// Consulta depois:
    []
//

drop

Deleta o arquivo .json criado para a Collection.

Syntax

collection.drop()

Retorno

Não possui retorno;

Exemplo

// Criando Collection
const kz = new KlauzDB({
    path: '.'
})

const collection = kz.createCollection('teste') // arquivo .json criado

collection.drop() // arquivo .json deletado

✒️ Autores