Blame view

lib/history.js 1.19 KB
4fbfae95f   Adhidarma Hadiwinoto   Messages history
1
  'use strict';
c5a93bdc3   Adhidarma Hadiwinoto   Optimasi redis hi...
2
  const MAX_HISTORY = 1000;
8182d4cee   Adhidarma Hadiwinoto   History put on redis
3
  const redis = require('redis');
4fbfae95f   Adhidarma Hadiwinoto   Messages history
4
  const CircularBuffer = require("circular-buffer");
8182d4cee   Adhidarma Hadiwinoto   History put on redis
5
6
  
  const config = require('komodo-sdk/config');
1a5a3629d   Adhidarma Hadiwinoto   Load history from...
7
  const logger = require('komodo-sdk/logger');
8182d4cee   Adhidarma Hadiwinoto   History put on redis
8
  const redisClient = redis.createClient(config.redis || { host: '127.0.0.1' });
c5a93bdc3   Adhidarma Hadiwinoto   Optimasi redis hi...
9
  const history = new CircularBuffer(MAX_HISTORY);
4fbfae95f   Adhidarma Hadiwinoto   Messages history
10

8182d4cee   Adhidarma Hadiwinoto   History put on redis
11
12
13
14
  const REDIS_KEYWORD = `SHAKIR_SMS_HISTORY_${config.name||'SMS'}`;
  
  function fetchFromRedis() {
      redisClient.LRANGE(REDIS_KEYWORD, 0, -1, (err, reply) => {
c5a93bdc3   Adhidarma Hadiwinoto   Optimasi redis hi...
15
          reply.reverse().forEach((el) => {
1a5a3629d   Adhidarma Hadiwinoto   Load history from...
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   Adhidarma Hadiwinoto   Log redis history...
22
          logger.info(`History fetched from redis with ${reply.length} items.`);
8182d4cee   Adhidarma Hadiwinoto   History put on redis
23
24
25
      })
  }
  fetchFromRedis();
4fbfae95f   Adhidarma Hadiwinoto   Messages history
26
  function push(item) {
c5a93bdc3   Adhidarma Hadiwinoto   Optimasi redis hi...
27
28
29
      redisClient.LPUSH(REDIS_KEYWORD, JSON.stringify(item), () => {
          redisClient.LTRIM(REDIS_KEYWORD, 0, MAX_HISTORY);
      });
4fbfae95f   Adhidarma Hadiwinoto   Messages history
30
31
32
33
      history.push(item);
  }
  
  function dump() {
c747a8b35   Adhidarma Hadiwinoto   DEBUG
34
      const result = history.toarray();
b904e7094   Adhidarma Hadiwinoto   DEBUG
35
      // console.log(JSON.stringify(result, null, 2));
c747a8b35   Adhidarma Hadiwinoto   DEBUG
36
      return result;
4fbfae95f   Adhidarma Hadiwinoto   Messages history
37
38
39
40
  }
  
  exports.push = push;
  exports.dump = dump;