Blame view

lib/history.js 1.05 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');
8182d4cee   Adhidarma Hadiwinoto   History put on redis
4
5
  
  const config = require('komodo-sdk/config');
1a5a3629d   Adhidarma Hadiwinoto   Load history from...
6
  const logger = require('komodo-sdk/logger');
8182d4cee   Adhidarma Hadiwinoto   History put on redis
7
  const redisClient = redis.createClient(config.redis || { host: '127.0.0.1' });
4fbfae95f   Adhidarma Hadiwinoto   Messages history
8

8182d4cee   Adhidarma Hadiwinoto   History put on redis
9
  const REDIS_KEYWORD = `SHAKIR_SMS_HISTORY_${config.name||'SMS'}`;
4fbfae95f   Adhidarma Hadiwinoto   Messages history
10
  function push(item) {
c5a93bdc3   Adhidarma Hadiwinoto   Optimasi redis hi...
11
12
13
      redisClient.LPUSH(REDIS_KEYWORD, JSON.stringify(item), () => {
          redisClient.LTRIM(REDIS_KEYWORD, 0, MAX_HISTORY);
      });
4fbfae95f   Adhidarma Hadiwinoto   Messages history
14
15
16
  }
  
  function dump() {
1caafb61a   Adhidarma Hadiwinoto   History only rel...
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
      return new Promise((resolve) => {
          const result = [];
  
          redisClient.LRANGE(REDIS_KEYWORD, 0, -1, (err, reply) => {
              reply.forEach((el) => {
                  try {
                      result.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.`);
  
              resolve(result);
          });
      
      })
4fbfae95f   Adhidarma Hadiwinoto   Messages history
34
35
36
37
  }
  
  exports.push = push;
  exports.dump = dump;