71 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			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
 | 
						|
};
 |