Skip to content

Commit

Permalink
bolt: asynchronously treat query params
Browse files Browse the repository at this point in the history
  • Loading branch information
jonpacker committed Jul 29, 2016
1 parent d5aa2b2 commit 7992002
Showing 1 changed file with 17 additions and 1 deletion.
18 changes: 17 additions & 1 deletion lib/bolt/seraph.js
Expand Up @@ -236,9 +236,25 @@ class Seraph {
return _.extend(aggregated, _.object(_.range(arr.length), promises));
}

_treatParams(params) {
var pr = (v) => { return new Promise(r => r(v)) };
var treatObj = obj => {
if (typeof obj == 'number') return pr(obj % 1 === 0 ? neo4j.int(obj) : obj);
else if (obj instanceof Promise) return obj.then(val => treatObj(val));
else if (neo4j.isInt(obj)) return pr(obj);
else if (Array.isArray(obj)) return Promise.all(obj.map(treatObj));
else if (typeof obj == 'object')
return Promise.all(_.map(obj, (v,k) => { return treatObj(v).then(v => [k,v]) }))
.then(tuples => _.object(tuples))
else return pr(obj);
}
return params ? treatObj(params) : pr(params);
}

_run(query, params) {
var sess = this._session();
return sess.run(query, params)
return this._treatParams(params)
.then(params => sess.run(query, params))
.then(this._endSession(sess))
.catch((e) => {
this._endSession(sess)();
Expand Down

0 comments on commit 7992002

Please sign in to comment.