UNPKG

dogmaql.driver.redis

Version:

Redis driver for DogmaQL (Dogma Query Language).

129 lines (126 loc) 4.9 kB
"use strict"; var _dogmalang = require("dogmalang"); var _async = require("async"); const ResultSet = _dogmalang.dogma.use(require("./ResultSet")); const $Runner = class Runner { constructor(client) { _dogmalang.dogma.paramExpected("client", client, null);Object.defineProperty(this, "_client", { value: client, writable: false });{} } }; const Runner = new Proxy($Runner, { apply(receiver, self, args) { return new $Runner(...args); } });module.exports = exports = Runner; Runner.prototype.run = function (cmds) { _dogmalang.dogma.paramExpected("cmds", cmds, null);{ return (0, _dogmalang.promise)((rslv, rej) => { _dogmalang.dogma.paramExpected("rslv", rslv, null);_dogmalang.dogma.paramExpected("rej", rej, null);{ let rslt;(0, _async.eachSeries)(cmds, (cmd, done) => { _dogmalang.dogma.paramExpected("cmd", cmd, null);_dogmalang.dogma.paramExpected("done", done, null);{ this._runCmd(...cmd).then(res => { { if (res) { rslt = res; }done(); } }, done); } }, err => { { if (err) { rej(err); } else { rslv(rslt); } } }); } }); } }; Runner.prototype._runCmd = function (cmd, ...args) { _dogmalang.dogma.paramExpected("cmd", cmd, null);{ return (0, _dogmalang.promise)((rslv, rej) => { _dogmalang.dogma.paramExpected("rslv", rslv, null);_dogmalang.dogma.paramExpected("rej", rej, null);{ function discard() { { rslv(); } }function handleError(err) { { /* istanbul ignore next */if (err) { return rej(err); }rslv(); } }const $aux1518779358943 = cmd;if ($aux1518779358943 == "del") { this._client.del(...args, discard); } else if ($aux1518779358943 == "eval") { this._client.eval(...args, (err, res) => { { if (err) { rej(err); } else { if (res) { rslv(_dogmalang.dogma.is(res, _dogmalang.list) ? ResultSet.from(res) : JSON.parse(res)); } else { rslv(); } } } }); } else if ($aux1518779358943 == "ft.add") { this._client.send_command("ft.add", ...args, handleError); } else if ($aux1518779358943 == "ft.create") { this._client.send_command("ft.create", ...args, handleError); } else if ($aux1518779358943 == "ft.drop") { this._client.send_command("ft.drop", ...args, discard); } else if ($aux1518779358943 == "ft.get") { this._client.send_command("ft.get", ...args, (err, res) => { { /* istanbul ignore next */if (err) { return rej(err); }if (res) { const obj = {};for (let i = 0; i < (0, _dogmalang.len)(res); i += 2) { _dogmalang.dogma.setItem("=", obj, _dogmalang.dogma.getItem(res, i), _dogmalang.dogma.getItem(res, i + 1)); }res = obj; }rslv(res); } }); } else if ($aux1518779358943 == "ft.search") { this._client.send_command("ft.search", ...args, (err, res) => { { /* istanbul ignore next */if (err) { return rej(err); }const rslt = ResultSet();for (let i = 2; i < (0, _dogmalang.len)(res); i += 2) { const doc = _dogmalang.dogma.getItem(res, i);const item = {};for (let i = 0; i < (0, _dogmalang.len)(doc); i += 2) { _dogmalang.dogma.setItem("=", item, _dogmalang.dogma.getItem(doc, i), _dogmalang.dogma.getItem(doc, i + 1)); }_dogmalang.dogma.lshift(rslt, item); }rslv(rslt); } }); } else if ($aux1518779358943 == "json.get") { this._client.send_command("json.get", ...args, (err, item) => { { /* istanbul ignore next */if (err) { return rej(err); }rslv(item ? JSON.parse(item) : null); } }); } else if ($aux1518779358943 == "json.set") { this._client.send_command("json.set", ...args, handleError); } else if ($aux1518779358943 == "publish") { this._client.publish(...args);rslv(); } else if ($aux1518779358943 == "zrangebyscore") { this._client.zrangebyscore(...args, (err, res) => { { /* istanbul ignore next */if (err) { return rej(err); }rslv(ResultSet.from(res)); } }); } else { this._client.zremrangebyscore(...args, handleError); } } }); } };