Blame view
lib/history.js
1.19 KB
4fbfae95f
|
1 |
'use strict'; |
c5a93bdc3
|
2 |
const MAX_HISTORY = 1000; |
8182d4cee
|
3 |
const redis = require('redis'); |
4fbfae95f
|
4 |
const CircularBuffer = require("circular-buffer"); |
8182d4cee
|
5 6 |
const config = require('komodo-sdk/config'); |
1a5a3629d
|
7 |
const logger = require('komodo-sdk/logger'); |
8182d4cee
|
8 |
const redisClient = redis.createClient(config.redis || { host: '127.0.0.1' }); |
c5a93bdc3
|
9 |
const history = new CircularBuffer(MAX_HISTORY); |
4fbfae95f
|
10 |
|
8182d4cee
|
11 12 13 14 |
const REDIS_KEYWORD = `SHAKIR_SMS_HISTORY_${config.name||'SMS'}`; function fetchFromRedis() { redisClient.LRANGE(REDIS_KEYWORD, 0, -1, (err, reply) => { |
c5a93bdc3
|
15 |
reply.reverse().forEach((el) => { |
1a5a3629d
|
16 17 18 19 20 21 |
try { history.push(JSON.parse(el)); } catch (e) { logger.warn(`Error parsing JSON on redis history. ${e.toString()}`); } }); |
173aca4a3
|
22 |
logger.info(`History fetched from redis with ${reply.length} items.`); |
8182d4cee
|
23 24 25 |
}) } fetchFromRedis(); |
4fbfae95f
|
26 |
function push(item) { |
c5a93bdc3
|
27 28 29 |
redisClient.LPUSH(REDIS_KEYWORD, JSON.stringify(item), () => { redisClient.LTRIM(REDIS_KEYWORD, 0, MAX_HISTORY); }); |
4fbfae95f
|
30 31 32 33 |
history.push(item); } function dump() { |
c747a8b35
|
34 |
const result = history.toarray(); |
b904e7094
|
35 |
// console.log(JSON.stringify(result, null, 2)); |
c747a8b35
|
36 |
return result; |
4fbfae95f
|
37 38 39 40 |
} exports.push = push; exports.dump = dump; |