71 lines
1.7 KiB
JavaScript
71 lines
1.7 KiB
JavaScript
let client;
|
|
try {
|
|
const redis = require("redis");
|
|
console.log("trying to create");
|
|
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
|
|
};
|