Blame view

lib/partner-last-seen.js 1.62 KB
f53fe083f   Adhidarma Hadiwinoto   Sender chooser algo
1
  "use strict";
f43dbc16a   Adhidarma Hadiwinoto   New modem selector
2
  const REDIS_TTL_SECS = 3600 * 24 * 31;
f53fe083f   Adhidarma Hadiwinoto   Sender chooser algo
3
4
  
  const config = require('komodo-sdk/config');
51ea9b1ba   Adhidarma Hadiwinoto   partner last seen...
5
  // const logger = require('komodo-sdk/logger');
f53fe083f   Adhidarma Hadiwinoto   Sender chooser algo
6
7
8
9
10
11
12
13
14
15
16
17
18
  
  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) {
51ea9b1ba   Adhidarma Hadiwinoto   partner last seen...
19
          partnerNumber = (partnerNumber || '').replace(/^\+/, '');
f53fe083f   Adhidarma Hadiwinoto   Sender chooser algo
20
21
22
23
24
25
26
27
          if (!partnerNumber) {
              resolve(null);
          }
          else if (_caches[partnerNumber]) {
              resolve(_caches[partnerNumber]);
          }
          else {
              const keyword = _composeKeyword(partnerNumber);
51ea9b1ba   Adhidarma Hadiwinoto   partner last seen...
28
              // logger.verbose(`REDIS-DEBUG: GET`, {keyword});
f53fe083f   Adhidarma Hadiwinoto   Sender chooser algo
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
              
              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) {
51ea9b1ba   Adhidarma Hadiwinoto   partner last seen...
47
      partnerNumber = (partnerNumber || '').replace(/^\+/, '');
f53fe083f   Adhidarma Hadiwinoto   Sender chooser algo
48
49
50
51
52
53
54
      if (!partnerNumber || !modemName) {
          return;
      }
  
      _caches[partnerNumber] = modemName;
  
      const keyword = _composeKeyword(partnerNumber);
51ea9b1ba   Adhidarma Hadiwinoto   partner last seen...
55
      // logger.verbose('REDIS-DEBUG: SET', { keyword })
f53fe083f   Adhidarma Hadiwinoto   Sender chooser algo
56
57
58
59
60
      redisClient.set(keyword, modemName, 'EX', REDIS_TTL_SECS);
  }
  
  exports.get = get;
  exports.set = set;