/lsdb

localStorage database powered by with JSON definition

Primary LanguageTypeScriptMIT LicenseMIT

lsdb

CI Issues Forks Stars All Contributors

LocalStorage database powered by with JSON definition

Features

  • 📦 Tree-shakeable
  • Fast
  • Lightweight
  • ❤️ Strongly typed

Installation

npm i @reliutg/lsdb

With Skypack

no npm install needed!

<script type="module">
  import Lsdb from 'https://cdn.skypack.dev/@reliutg/lsdb';
</script>

We’ll start by setting up a database:

const lsdb = new Lsdb('dbname');

Creating list of collections

lsdb.collection(['categories', 'articles']);

Inserting

lsdb.insert('categories', { title: 'Drinks' });
lsdb.insert('categories', { title: 'Dinner' });
lsdb.insert('categories', { title: 'Breakfast' });
lsdb.insert('articles', { title: 'Coffee', category: 'Drinks' });

Getting data

Get single collection or all collection entries

lsdb.all();
// {categories: Array(2), articles: Array(0)}

lsdb.all('categories');
// [{title: 'Drinks'}, {title: 'Dinner'}, {title: 'Breakfast'}]

Available operators

Based on MongoDB query selectors

  • $eq - Equal
  • $in - In
  • $nin - Not in
  • $ne - Not equal
  • $gt - Greater than
  • $gte - Greater than or equal
  • $lt - Less than
  • $lte - Less than or equal

Get a list of documents matching the query

lsdb.find('categories', {
  where: {
    category: { $in: ['Drinks'] },
  },
});

lsdb.find('articles', {
  where: {
    category: { $eq: 'Drinks' },
  },
});

Get a single document matching the query

lsdb.findOne('categories', {
  where: {
    _id: { $eq: id },
  },
});

Updating

Update a single document matching the query

lsdb.update('categories', {
  where: {
    _id: { $eq: id },
  },
});

Removing

Remove a single document matching the query

lsdb.delete('categories', {
  where: {
    _id: { $eq: id },
  },
});

Contributors

Thanks goes to these wonderful people (emoji key):


Aneesh Relan

⚠️ 💻

Zymantas Maumevicius

🚇 💻

Nitkalya Wiriyanuparb

⚠️ 💻

Connor Ruggles

🚇 💻

MAKSS

📖

Vasiliy Vanchuk

💻

This project follows the all-contributors specification. Contributions of any kind welcome!