Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/romelperez/prhone-mdb
Mini database for examples and testing
https://github.com/romelperez/prhone-mdb
database mini-database
Last synced: 23 days ago
JSON representation
Mini database for examples and testing
- Host: GitHub
- URL: https://github.com/romelperez/prhone-mdb
- Owner: romelperez
- License: mit
- Created: 2016-03-04T02:20:28.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2017-03-06T22:34:24.000Z (over 7 years ago)
- Last Synced: 2024-09-24T04:38:25.867Z (about 1 month ago)
- Topics: database, mini-database
- Language: JavaScript
- Homepage:
- Size: 16.6 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# PRHONE MDB
[![npm version](https://badge.fury.io/js/prhone-mdb.svg)](https://badge.fury.io/js/prhone-mdb)
[![Build Status](https://travis-ci.org/romelperez/prhone-mdb.svg?branch=master)](https://travis-ci.org/romelperez/prhone-mdb)
[![prhone](https://img.shields.io/badge/prhone-project-1b38a9.svg)](http://romelperez.com)> PRHONE Mini-DataBase.
Mini-database manager using Node file system API in a relational way for simple storing or for practicing Node web servers without using a real DBMS.
- Promises are used to handle operations.
- Uses a JSON file to store the data.
- All data is stored in tables.
- The identifier of each item in each table is an UUID v4 and its name is `id`.
- UTF8 is used for encoding.
- When creating a new item:
- If table does not exists, it's created automatically.
- When getting:
- Returns an empty array if table is not found.
- But error if fetching an unique item and it's not found.
- When removing:
- If item does not exists, will be ok.
- In all cases, if JSON file is corrupt, an error will be returned.## Install
```bash
npm install --save prhone-mdb
```## Use
### `__dirname/database.json`
Empty file.
### `__dirname/app.js`
```js
const MDB = require('prhone-mdb');const db = new MDB(`${__dirname}/database.json`);
// Creates a new collection called `fruits` and create a new item within.
db.create('fruits', { name: 'apple', color: 'red' }).then(fruit => {
console.log('New fruit:', fruit);
// { id: 'c846482b-7dbe-4ee3-866c-e3cc06463cd2', name: 'apple', color: 'red' }
}, err => {
console.log('Error:', err); // If an error occurs.
});// Create a new item in fruits collection.
db.create('fruits', { name: 'lemon', color: 'yellow' }).then(fruit => {
console.log('New fruit:', fruit);
// { id: '667ba0fd-dfc0-48aa-b8ab-17cd1fc5d48f', name: 'lemon', color: 'yellow' }
}, err => {
console.log('Error:', err);
});db.getById('fruits', 'c846482b-7dbe-4ee3-866c-e3cc06463cd2').then(fruit => {
console.log('Fruit:', fruit);
// { id: 'c846482b-7dbe-4ee3-866c-e3cc06463cd2', name: 'apple', color: 'red' }
});db.
updateById('fruits', 'c846482b-7dbe-4ee3-866c-e3cc06463cd2', { color: 'green' }).
then(fruit => {
console.log('Modified fruit:', fruit);
// { id: 'c846482b-7dbe-4ee3-866c-e3cc06463cd2', name: 'apple', color: 'green' }
});db.getById('fruits', 'c846482b-7dbe-4ee3-866c-e3cc06463cd2').then(fruit => {
console.log('Fruit:', fruit);
// { id: 'c846482b-7dbe-4ee3-866c-e3cc06463cd2', name: 'apple', color: 'green' }
});
```## API
### `db MDB(String filePath)`
- `String filePath` the absolute path to a JSON file where to store the data.
### `Promise db.create(String tableName, Object item)`
- `String tableName` The table name. Even if it does not exist.
- `Object item` The new item to create in the table.#### `.then(function (Object item) {})`
- `Object item` The new item created.
### `Promise db.getById(String tableName, String itemId)`
- `String tableName` The table name.
- `String itemId` The item id.#### `.then(function (Object item) {})`
- `Object item` The item fetched.
### `Promise db.getAll(String tableName)`
- `String tableName` The table name.
#### `.then(function (Array items) {})`
- `Array items` The collection of all items. If table did not exist, it is an empty array.
### `Promise db.updateById(String tableName, String itemId, Object data)`
- `String tableName` The table name.
- `String itemId` The item id.
- `Object data` The new data of the item. This will be merged.#### `.then(function (Object item) {})`
- `Object item` The item updated.
### `Promise db.removeById(String tableName, String itemId, Object data)`
- `String tableName` The table name.
- `String itemId` The item id.#### `.then(function () {})`
The promise will not give parameters.
## License
[MIT](./LICENSE)