diff --git a/package.json b/package.json index bcfaaa9..9a935a2 100644 --- a/package.json +++ b/package.json @@ -34,17 +34,17 @@ }, "homepage": "https://github.com/ipfs/js-datastore-core#readme", "devDependencies": { - "aegir": "^12.1.3", + "aegir": "^15.2.0", "chai": "^4.1.2", "dirty-chai": "^2.0.1", - "flow-bin": "^0.58.0" + "flow-bin": "~0.81.0" }, "dependencies": { - "async": "^2.5.0", - "interface-datastore": "~0.4.0", - "left-pad": "^1.1.3", + "async": "^2.6.1", + "interface-datastore": "~0.5.0", + "left-pad": "^1.3.0", "pull-many": "^1.0.8", - "pull-stream": "^3.6.1" + "pull-stream": "^3.6.9" }, "engines": { "node": ">=6.0.0", diff --git a/src/mount.js b/src/mount.js index 15e52c8..7c461d2 100644 --- a/src/mount.js +++ b/src/mount.js @@ -6,6 +6,7 @@ const many = require('pull-many') const pull = require('pull-stream') const Key = require('interface-datastore').Key +const Errors = require('interface-datastore').Errors const utils = require('interface-datastore').utils const asyncFilter = utils.asyncFilter const asyncSort = utils.asyncSort @@ -62,8 +63,9 @@ class MountDatastore /* :: */ { put (key /* : Key */, value /* : Value */, callback /* : Callback */) /* : void */ { const match = this._lookup(key) if (match == null) { - callback(new Error('No datastore mounted for this key')) - return + return callback( + Errors.dbWriteFailedError(new Error('No datastore mounted for this key')) + ) } match.datastore.put(match.rest, value, callback) @@ -72,8 +74,9 @@ class MountDatastore /* :: */ { get (key /* : Key */, callback /* : Callback */) /* : void */ { const match = this._lookup(key) if (match == null) { - callback(new Error('No datastore mounted for this key')) - return + return callback( + Errors.notFoundError(new Error('No datastore mounted for this key')) + ) } match.datastore.get(match.rest, callback) @@ -92,8 +95,9 @@ class MountDatastore /* :: */ { delete (key /* : Key */, callback /* : Callback */) /* : void */ { const match = this._lookup(key) if (match == null) { - callback(new Error('No datastore mounted for this key')) - return + return callback( + Errors.dbDeleteFailedError(new Error('No datastore mounted for this key')) + ) } match.datastore.delete(match.rest, callback) diff --git a/src/tiered.js b/src/tiered.js index 35b2f6f..ddf93be 100644 --- a/src/tiered.js +++ b/src/tiered.js @@ -3,6 +3,7 @@ const each = require('async/each') const whilst = require('async/whilst') +const Errors = require('interface-datastore').Errors /* :: import type {Key, Datastore, Callback, Batch, Query, QueryResult} from 'interface-datastore' @@ -25,13 +26,23 @@ class TieredDatastore /* :: */ { open (callback /* : Callback */) /* : void */ { each(this.stores, (store, cb) => { store.open(cb) - }, callback) + }, (err) => { + if (err) { + return callback(Errors.dbOpenFailedError()) + } + callback() + }) } put (key /* : Key */, value /* : Value */, callback /* : Callback */) /* : void */ { each(this.stores, (store, cb) => { store.put(key, value, cb) - }, callback) + }, (err) => { + if (err) { + return callback(Errors.dbWriteFailedError()) + } + callback() + }) } get (key /* : Key */, callback /* : Callback */) /* : void */ { @@ -47,7 +58,12 @@ class TieredDatastore /* :: */ { } cb() }) - }, callback) + }, (err, res) => { + if (err || !res) { + return callback(Errors.notFoundError()) + } + callback(null, res) + }) } has (key /* : Key */, callback /* : Callback */) /* : void */ { @@ -69,7 +85,12 @@ class TieredDatastore /* :: */ { delete (key /* : Key */, callback /* : Callback */) /* : void */ { each(this.stores, (store, cb) => { store.delete(key, cb) - }, callback) + }, (err) => { + if (err) { + return callback(Errors.dbDeleteFailedError()) + } + callback() + }) } close (callback /* : Callback */) /* : void */ {