diff --git a/api/redis.js b/api/redis.js new file mode 100644 index 0000000..e688baa --- /dev/null +++ b/api/redis.js @@ -0,0 +1,39 @@ +const redis = require("redis") +const client = redis.createClient() + + +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 +}; \ No newline at end of file diff --git a/package.json b/package.json index 9f7d0ed..81d6102 100644 --- a/package.json +++ b/package.json @@ -62,6 +62,7 @@ "mini-css-extract-plugin": "~0.5", "optimize-css-assets-webpack-plugin": "~3.2", "pm2": "^4.2.3", + "redis": "^3.0.2", "sass-loader": "~7.1", "uglifyjs-webpack-plugin": "~1.2", "url-loader": "^2.2.0",