Commit 541da0166f6047fcf3600965feb6048102d57d96
1 parent
62a6839141
Exists in
master
Partner last seen do not cache on process mem
Showing 1 changed file with 0 additions and 12 deletions Inline Diff
lib/partner-last-seen.js
1 | "use strict"; | 1 | "use strict"; |
2 | 2 | ||
3 | const REDIS_TTL_SECS = 3600 * 24 * 31; | 3 | const REDIS_TTL_SECS = 3600 * 24 * 31; |
4 | 4 | ||
5 | const config = require('komodo-sdk/config'); | 5 | const config = require('komodo-sdk/config'); |
6 | // const logger = require('komodo-sdk/logger'); | ||
7 | 6 | ||
8 | const redis = require('redis'); | 7 | const redis = require('redis'); |
9 | const redisClient = redis.createClient(config.redis || { host: '127.0.0.1' }); | 8 | const redisClient = redis.createClient(config.redis || { host: '127.0.0.1' }); |
10 | 9 | ||
11 | const _caches = {}; | ||
12 | |||
13 | |||
14 | function _composeKeyword(partner) { | 10 | function _composeKeyword(partner) { |
15 | return `POCHINKI_PARTNER_LAST_SEEN_${ partner }`; | 11 | return `POCHINKI_PARTNER_LAST_SEEN_${ partner }`; |
16 | } | 12 | } |
17 | 13 | ||
18 | function get(partnerNumber) { | 14 | function get(partnerNumber) { |
19 | return new Promise(function(resolve) { | 15 | return new Promise(function(resolve) { |
20 | 16 | ||
21 | partnerNumber = (partnerNumber || '').replace(/^\+/, ''); | 17 | partnerNumber = (partnerNumber || '').replace(/^\+/, ''); |
22 | 18 | ||
23 | if (!partnerNumber) { | 19 | if (!partnerNumber) { |
24 | resolve(null); | 20 | resolve(null); |
25 | } | 21 | } |
26 | else if (_caches[partnerNumber]) { | ||
27 | resolve(_caches[partnerNumber]); | ||
28 | } | ||
29 | else { | 22 | else { |
30 | const keyword = _composeKeyword(partnerNumber); | 23 | const keyword = _composeKeyword(partnerNumber); |
31 | // logger.verbose(`REDIS-DEBUG: GET`, {keyword}); | ||
32 | 24 | ||
33 | redisClient.get(keyword, function(err, reply) { | 25 | redisClient.get(keyword, function(err, reply) { |
34 | if (err) { | 26 | if (err) { |
35 | resolve(null); | 27 | resolve(null); |
36 | } | 28 | } |
37 | else if (reply) { | 29 | else if (reply) { |
38 | resolve(Number(reply)); | 30 | resolve(Number(reply)); |
39 | _caches[partnerNumber] = Number(reply); | ||
40 | } | 31 | } |
41 | else { | 32 | else { |
42 | resolve(null); | 33 | resolve(null); |
43 | } | 34 | } |
44 | }) | 35 | }) |
45 | } | 36 | } |
46 | }) | 37 | }) |
47 | } | 38 | } |
48 | 39 | ||
49 | function set(partnerNumber, modemName) { | 40 | function set(partnerNumber, modemName) { |
50 | partnerNumber = (partnerNumber || '').replace(/^\+/, ''); | 41 | partnerNumber = (partnerNumber || '').replace(/^\+/, ''); |
51 | 42 | ||
52 | if (!partnerNumber || !modemName) { | 43 | if (!partnerNumber || !modemName) { |
53 | return; | 44 | return; |
54 | } | 45 | } |
55 | 46 | ||
56 | _caches[partnerNumber] = modemName; | ||
57 | |||
58 | const keyword = _composeKeyword(partnerNumber); | 47 | const keyword = _composeKeyword(partnerNumber); |
59 | // logger.verbose('REDIS-DEBUG: SET', { keyword }) | ||
60 | redisClient.set(keyword, modemName, 'EX', REDIS_TTL_SECS); | 48 | redisClient.set(keyword, modemName, 'EX', REDIS_TTL_SECS); |
61 | } | 49 | } |
62 | 50 | ||
63 | exports.get = get; | 51 | exports.get = get; |
64 | exports.set = set; | 52 | exports.set = set; |
65 | 53 |