addressbook.js 1.39 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 `TELEGRAM_ADDRESSBOOK_NAKAMICHIvsMiFA_${ config.telegram.token }_${ partner }`;
}

function get(partner) {
    partner = partner.toUpperCase().replace(/@.*$/, '');
    return new Promise(function(resolve) {
        if (_caches[partner]) {
            resolve(_caches[partner]);
        }
        else {
            const keyword = _composeKeyword(partner);

            redisClient.get(keyword, function(err, reply) {
                if (err) {
                    resolve(null);
                    return;
                }

                if (reply) {
                    resolve(Number(reply));
                    _caches[partner] = Number(reply);
                }
                else {
                    resolve(null);
                }
            })
        }
    })

}

function put(partner, chatId) {
    partner = partner.toUpperCase().replace(/@.*$/, '');
    if (!partner || !chatId) {
        return;
    }

    partner = partner.toUpperCase();
    _caches[partner] = chatId;

    const keyword = _composeKeyword(partner);
    redisClient.set(keyword, chatId, 'EX', REDIS_TTL_SECS);
}

exports.get = get;
exports.put = put;