'use strict'; const MAX_HISTORY = 1000; const redis = require('redis'); const CircularBuffer = require("circular-buffer"); const config = require('komodo-sdk/config'); const logger = require('komodo-sdk/logger'); const redisClient = redis.createClient(config.redis || { host: '127.0.0.1' }); const history = new CircularBuffer(MAX_HISTORY); const REDIS_KEYWORD = `SHAKIR_SMS_HISTORY_${config.name||'SMS'}`; function fetchFromRedis() { redisClient.LRANGE(REDIS_KEYWORD, 0, -1, (err, reply) => { reply.reverse().forEach((el) => { try { history.push(JSON.parse(el)); } catch (e) { logger.warn(`Error parsing JSON on redis history. ${e.toString()}`); } }); logger.info(`History fetched from redis with ${reply.length} items.`); }) } fetchFromRedis(); function push(item) { redisClient.LPUSH(REDIS_KEYWORD, JSON.stringify(item), () => { redisClient.LTRIM(REDIS_KEYWORD, 0, MAX_HISTORY); }); history.push(item); } function dump() { const result = history.toarray(); // console.log(JSON.stringify(result, null, 2)); return result; } exports.push = push; exports.dump = dump;