MycroDB é uma biblioteca JavaScript projetada para gerenciar Bancos de Dados de Documentos armazenados em um único arquivo JSON ou na memória.
MycroDB é publicado como uma biblioteca no NPM, que você pode encontrar em https://www.npmjs.com/package/mycro-db.
Para demonstrar como o MycroDB funciona, desenvolvemos um projeto de exemplo que implementa uma Interface de Linha de Comando (CLI) para o gerenciamento de tarefas. Para obter mais informações sobre esse projeto, visite seu repositório dedicado em Todz.
Para integrar o MycroDB em seu projeto, você pode instalá-lo via npm (ou outros gerenciadores de pacotes):
npm install mycro-db
Para começar, importe a classe ‘MycroDatabase’ juntamente com uma classe ‘Storage’ e inicialize ambos os objetos:
import { JsonStorage, MemoryStorage, MycroDatabase } from 'mycro-db';
// Modo de memória
const inMemoryStorage = new MemoryStorage();
const db = new MycroDatabase(inMemoryStorage);
// Modo de arquivo JSON
const jsonStorage = new JsonStorage('my_database.json');
const db = new MycroDatabase(jsonStorage);
Para manter os dados organizados, a biblioteca utiliza uma estrutura de coleções. Use coleções para categorizar logicamente seus dados.
Para criar uma coleção, você deve fornecer um nome e, opcionalmente, pode incluir um modelo (um objeto com propriedades e seus tipos de dados correspondentes) para melhorar a intellisense do IDE.
const User = db.collection('users', { name: String(), age: Number() });
Para inserir um documento em uma coleção, você deve fornecer um objeto JavaScript simples com valores compatÃveis com JSON. Você pode inserir um ou mais documentos em uma única operação passando uma matriz de objetos de documentos.
User.insert([
{ name: 'Alice', age: 28 },
{ name: 'Bob', age: 30 }
]);
Para atualizar um documento, forneça um objeto contendo a chave ‘id’ com o ID do documento a ser atualizado e a chave ‘data’ contendo um objeto com os pares ‘chave: valor’ a serem atualizados no documento. A atualização é atômica, o que significa que apenas os valores fornecidos no objeto serão atualizados, enquanto os outros valores no documento permanecem inalterados. Você pode atualizar um ou mais documentos em uma única operação passando uma matriz de objetos de documentos.
User.update([
{ id: 1, data: { age: 45 } }
]);
Para recuperar um documento de uma coleção, forneça um ID do documento. Você pode obter um ou mais documentos em uma única operação passando uma matriz de IDs.
User.get([
1, 5
]);
Para consultar documentos em uma coleção, forneça uma função de estratégia (filtro). Se nenhuma função de filtro for fornecida, todos os documentos serão retornados. A quantidade de documentos retornados depende do parâmetro ‘limite’, e o parâmetro de deslocamento é usado para ‘paginação’. Todos os parâmetros são opcionais. Por padrão, o limite é 25 e o deslocamento é 0.
const estrategia = (usuário) => usuário.age > 21;
const limite = 10;
const deslocamento = 0;
User.query(estrategia, limite, deslocamento);
Para remover um documento, forneça um ID do documento. Você pode remover um ou mais documentos em uma única operação passando uma matriz de IDs.
User.remove([
1, 5
]);
A biblioteca suporta as seguintes estratégias de armazenamento:
Esta é a estratégia mais simples, salvando os dados na memória até que a aplicação seja recarregada e todos os dados sejam apagados.
import { MemoryStorage } from 'mycro-db';
const armazenamento = new MemoryStorage();
const db = new MycroDatabase(armazenamento);
Esta é a estratégia mais comum e é ideal para aqueles que precisam de flexibilidade e persistência. Você pode fornecer um esquema, mas ele é principalmente usado como referência para a intellisense do IDE.
import { JsonStorage } from 'mycro-db';
const armazenamento = new JsonStorage('my_database.json');
const db = new MycroDatabase(armazenamento);
Esta estratégia oferece a mesma funcionalidade do JSON, mas incorpora um ‘Esquema’ para as funções de ‘inserção’ e ‘atualização’, garantindo que os documentos adicionados ao banco de dados estejam de acordo com a estrutura esperada (sem campos extras e tipos de dados corretos). Se um campo extra ou um valor incorreto for fornecido, um erro será gerado.
import { TypedJsonStorage } from 'mycro-db';
const armazenamento = new TypedJsonStorage('my_database.json');
const db = new MycroDatabase(armazenamento);
const usuário = db.collection('usuários', { nome: String(), idade: Number() });
// Aqui, é definido que um usuário possui campos Nome e Idade, respectivamente uma String e um Número.
Para obter um histórico detalhado das alterações neste projeto, consulte o arquivo changes.md no diretório raiz.
Este projeto está licenciado sob a Licença MIT. Consulte o arquivo LICENSE para obter mais detalhes.