history.js 1.19 KB
'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;