Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/roberthgnz/lsdb
Typed localStorage database powered by with JSON definition
https://github.com/roberthgnz/lsdb
database hacktoberfest localstorage project
Last synced: about 2 hours ago
JSON representation
Typed localStorage database powered by with JSON definition
- Host: GitHub
- URL: https://github.com/roberthgnz/lsdb
- Owner: roberthgnz
- License: mit
- Created: 2020-09-10T15:54:53.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2023-06-06T11:58:58.000Z (over 1 year ago)
- Last Synced: 2024-11-10T11:40:27.612Z (10 days ago)
- Topics: database, hacktoberfest, localstorage, project
- Language: TypeScript
- Homepage: https://www.npmjs.com/package/@reliutg/lsdb
- Size: 2.27 MB
- Stars: 15
- Watchers: 0
- Forks: 9
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# lsdb
[![CI](https://github.com/roberthgnz/lsdb/actions/workflows/main.yml/badge.svg)](https://github.com/roberthgnz/lsdb/actions/workflows/main.yml)
[![Issues](https://img.shields.io/github/issues/roberthgnz/lsdb)](https://github.com/roberthgnz/lsdb/issues)
[![Forks](https://img.shields.io/github/forks/roberthgnz/lsdb)](https://github.com/roberthgnz/lsdb)
[![Stars](https://img.shields.io/github/stars/roberthgnz/lsdb)](https://github.com/roberthgnz/lsdb)
[![All Contributors](https://img.shields.io/badge/all_contributors-5-orange.svg)](#contributors-)Typed localStorage database powered by with JSON definition
## Features
- 📦 Tree-shakeable
- ⚡ Fast
- ✨ Lightweight
- ❤️ Strongly typed## Installation
```bash
npm i @reliutg/lsdb
```## With Skypack
no npm install needed!
```html
import Lsdb from 'https://cdn.skypack.dev/@reliutg/lsdb';
```
## We’ll start by setting up a database:
```js
const lsdb = new Lsdb('dbname');
```## Creating list of collections
```js
// Create multiple collections
lsdb.collection(['categories', 'articles']);
// Create single collection
lsdb.collection('categories');
```## Inserting
```js
lsdb.insert('categories', { title: 'Drinks' });
lsdb.insert('categories', { title: 'Dinner' });
lsdb.insert('categories', { title: 'Breakfast' });
lsdb.insert('articles', { title: 'Coffee', category: 'Drinks' });
``````js
lsdb.insertMany('categories', [{ title: 'Drinks' }, { title: 'Dinner' }, { title: 'Breakfast' }]);
```## Getting data
Get single collection or all collection entries
```js
lsdb.all();
// {categories: Array(2), articles: Array(0)}lsdb.all('categories');
// [{title: 'Drinks'}, {title: 'Dinner'}, {title: 'Breakfast'}]
```Get a list of documents
```js
lsdb.find('categories', {
where: {
category: { $in: ['Drinks'] },
},
});lsdb.find('articles', {
where: {
category: { $eq: 'Drinks' },
},
});lsdb.find('articles', {
sort: {
field: 'title',
order: 'asc'
},
limit: 2,
skip: 1,
});
```### Find Options
| Field | Type | Description | Default | Required |
| ------- | -------- | ----------------------- | ----------- | -------- |
| `where` | `Object` | Filter by object | `undefined` | `false` |
| `sort` | `Object` | Sort by field name | `undefined` | `false` |
| `limit` | `number` | Limit number of results | `undefined` | `false` |
| `skip` | `number` | Skip number of results | `0` | `false` |### Available operators for where
Based on [MongoDB](https://docs.mongodb.com/manual/reference/operator/query/#query-selectors) 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 equalGet a single document matching the query
```js
lsdb.findOne('categories', {
where: {
_id: { $eq: id },
},
});
```## Updating
Update a single document matching the query
```js
lsdb.update('categories', {
where: {
_id: { $eq: id },
},
});
```## Removing
Remove a single document matching the query
```js
lsdb.delete('categories', {
where: {
_id: { $eq: id },
},
});
```## Contributors ✨
Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
Aneesh Relan
⚠️ 💻
Zymantas Maumevicius
🚇 💻
Nitkalya Wiriyanuparb
⚠️ 💻
Connor Ruggles
🚇 💻
MAKSS
📖
Vasiliy Vanchuk
💻
Pablo
💻
This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!