1 | 'use strict';
|
2 |
|
3 | var isPromise = require('is-promise');
|
4 |
|
5 | var init = function init(db, key, adapter) {
|
6 | db.read = function () {
|
7 | var r = adapter.read();
|
8 |
|
9 | return isPromise(r) ? r.then(db.plant) : db.plant(r);
|
10 | };
|
11 |
|
12 | db.write = function () {
|
13 | var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : db.getState();
|
14 |
|
15 | var w = adapter.write(db.getState());
|
16 |
|
17 | return isPromise(w) ? w.then(function () {
|
18 | return value;
|
19 | }) : value;
|
20 | };
|
21 |
|
22 | db.plant = function (state) {
|
23 | db[key] = state;
|
24 | return db;
|
25 | };
|
26 |
|
27 | db.getState = function () {
|
28 | return db[key];
|
29 | };
|
30 |
|
31 | db.setState = function (state) {
|
32 | db.plant(state);
|
33 | return db;
|
34 | };
|
35 |
|
36 | return db.read();
|
37 | };
|
38 |
|
39 | module.exports = {
|
40 | init
|
41 | }; |
\ | No newline at end of file |