Files
vinlottis/api/redis.js
Kasper Rynning-Tønnesen 096dbdb2e6 MOre sms, and automatic choser
2020-04-06 09:36:20 +02:00

71 lines
1.7 KiB
JavaScript

let client;
try {
const redis = require("redis");
console.log("trying to create redis");
client = redis.createClient();
client.on("error", function(err) {
client.quit();
console.error("Missing redis-configurations..");
client = {
rpush: function() {
console.log("redis-dummy lpush", arguments);
if (typeof arguments[arguments.length - 1] == "function") {
arguments[arguments.length - 1](null);
}
},
lrange: function() {
console.log("redis-dummy lrange", arguments);
if (typeof arguments[arguments.length - 1] == "function") {
arguments[arguments.length - 1](null);
}
},
del: function() {
console.log("redis-dummy del", arguments);
if (typeof arguments[arguments.length - 1] == "function") {
arguments[arguments.length - 1](null);
}
}
};
});
} catch (e) {}
const addMessage = message => {
const json = JSON.stringify(message);
client.rpush("messages", json);
return message;
};
const history = (skip = 0, take = 20) => {
skip = (1 + skip) * -1; // negate to get FIFO
return new Promise((resolve, reject) =>
client.lrange("messages", skip * take, skip, (err, data) => {
if (err) {
console.log(err);
reject(err);
}
data = data.map(data => JSON.parse(data));
resolve(data);
})
);
};
const clearHistory = () => {
return new Promise((resolve, reject) =>
client.del("messages", (err, success) => {
if (err) {
console.log(err);
reject(err);
}
resolve(success == 1 ? true : false);
})
);
};
module.exports = {
addMessage,
history,
clearHistory
};