partner-last-seen.js 1.62 KB
"use strict";

const REDIS_TTL_SECS = 3600 * 24 * 31;

const config = require('komodo-sdk/config');
// const logger = require('komodo-sdk/logger');

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) {

        partnerNumber = (partnerNumber || '').replace(/^\+/, '');

        if (!partnerNumber) {
            resolve(null);
        }
        else if (_caches[partnerNumber]) {
            resolve(_caches[partnerNumber]);
        }
        else {
            const keyword = _composeKeyword(partnerNumber);
            // logger.verbose(`REDIS-DEBUG: GET`, {keyword});
            
            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) {
    partnerNumber = (partnerNumber || '').replace(/^\+/, '');

    if (!partnerNumber || !modemName) {
        return;
    }

    _caches[partnerNumber] = modemName;

    const keyword = _composeKeyword(partnerNumber);
    // logger.verbose('REDIS-DEBUG: SET', { keyword })
    redisClient.set(keyword, modemName, 'EX', REDIS_TTL_SECS);
}

exports.get = get;
exports.set = set;