https://github.com/romelperez/prhone-mdb
Mini database for examples and testing
https://github.com/romelperez/prhone-mdb
database mini-database
Last synced: 10 months 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 (about 10 years ago)
- Default Branch: master
- Last Pushed: 2017-03-06T22:34:24.000Z (about 9 years ago)
- Last Synced: 2025-05-23T15:49:41.501Z (11 months ago)
- Topics: database, mini-database
- Language: JavaScript
- Homepage:
- Size: 16.6 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# PRHONE MDB
[](https://badge.fury.io/js/prhone-mdb)
[](https://travis-ci.org/romelperez/prhone-mdb)
[](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)