2.1.5 • Published 6 years ago

grapedb v2.1.5

Weekly downloads
1
License
MIT
Repository
github
Last release
6 years ago

grapedb

MIT License Build Status

NPM status

GrapeDB is a distributed object database. It can be also considered as an ODM.

install

npm install --save grapedb

usage

The main class is AdvancedManager which has the following public methods:

  • get(key) - gets a stringified node
  • set(key, value) - sets a stringified node
  • getComplex(key, maxLevel) - gets recursively an object with nested fields, maxLevel specifies the maximum depth; when maxLevel is undefined, the full object is returned
  • setComplex(key, value) - saves an object (creates or updates)

In order to delete an object, use setComplex(key, null).

AdvancedManager requires an injected simple manager and a logger.

The logger should have the following methods:

  • info(message)
  • error(message)

The simple manager should have the following methods:

  • get(key)
  • set(key, value) - value is always a string

GrapeDB provides the following simple managers:

  • InMemorySimpleManager - saves objects only in JavaScript memory (RAM)
  • LevelSimpleManager - an adapter to LevelDB

Example usage:

const { AdvancedManager, InMemorySimpleManager } = require('grapedb');

const logger = {
  error: () => {},
  info: () => {},
};

const simpleManager = new InMemorySimpleManager();
const manager = new AdvancedManager(simpleManager, logger);
const key = 'foo-key';
const value = {
  foo1: {
    bar: 'bar-value',
    baz: 'baz-value',
    foo: 'foo-value',
  },
  foo2: {
    bar: 'bar-value-2',
    baz: 'baz-value-2',
    foo: [
      'foo-value-2',
      {
        bar: 'foo-value-2-bar-2',
        foo: 'foo-value-2-foo-2',
      },
    ],
  },
};

manager.setComplex(key, value)
  .then(() => expect(manager.getComplex(key)).to.eventually.deep.equal(value));

Usage with LevelDB:

const { AdvancedManager, LevelSimpleManager } = require('grapedb');
const LevelPromise = require('level-promise');
const levelup = require('levelup');

const logger = {
  error: () => {},
  info: () => {},
};
const db = LevelPromise(levelup('my-database'));
const manager = new AdvancedManager(new LevelSimpleManager(db), logger);

run locally tests

git clone https://github.com/oprogramador/grapedb.git
cd grapedb
npm i
env APP_DIR=src npm run postinstall
npm t
2.1.5

6 years ago

2.1.4

6 years ago

2.1.3

7 years ago

2.1.2

7 years ago

2.1.1

7 years ago

2.1.0

7 years ago

2.0.0

7 years ago

1.3.3

7 years ago

1.3.2

7 years ago

1.3.1

7 years ago

1.2.1

7 years ago

1.2.0

7 years ago

1.1.1

7 years ago

1.1.0

7 years ago

1.0.1

7 years ago

1.0.0

7 years ago