dogmaql.driver.redis
Version:
Redis driver for DogmaQL (Dogma Query Language).
129 lines (126 loc) • 4.9 kB
JavaScript
;
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);
}
}
});
}
};