Blame view

lib/partner-last-seen.js 1.33 KB
f53fe083f   Adhidarma Hadiwinoto   Sender chooser algo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
  "use strict";
  
  const REDIS_TTL_SECS = 3600 * 24 * 7;
  
  const config = require('komodo-sdk/config');
  
  const redis = require('redis');
  const redisClient = redis.createClient(config.redis || { host: '127.0.0.1' });
  
  const _caches = {};
  
  
  function _composeKeyword(partner) {
      return `POCHINKI_PARTNER_LAST_SEEN_${ partner }`;
  }
  
  function get(partnerNumber) {
      return new Promise(function(resolve) {
  
          if (!partnerNumber) {
              resolve(null);
          }
          else if (_caches[partnerNumber]) {
              resolve(_caches[partnerNumber]);
          }
          else {
              const keyword = _composeKeyword(partnerNumber);
              
              redisClient.get(keyword, function(err, reply) {
                  if (err) {
                      resolve(null);
                  }
                  else if (reply) {
                      resolve(Number(reply));
                      _caches[partnerNumber] = Number(reply);
                  }
                  else {
                      resolve(null);
                  }
              })
          }
      })
  }
  
  function set(partnerNumber, modemName) {
      if (!partnerNumber || !modemName) {
          return;
      }
  
      _caches[partnerNumber] = modemName;
  
      const keyword = _composeKeyword(partnerNumber);
      redisClient.set(keyword, modemName, 'EX', REDIS_TTL_SECS);
  }
  
  exports.get = get;
  exports.set = set;