partner-last-seen.js 1.33 KB
"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;