UNPKG

@ixily/activ

Version:

Alpha Capture Trade Idea Verification. Blockchain ownership proven trade ideas and strategies.

112 lines 3.79 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CacheNodeRedisStorageModule = exports.resetData = exports.removeDataByPattern = exports.removeData = exports.updateData = exports.getData = exports.addData = void 0; const activ_v4_1 = require("../../activ-v4"); let logged = false; let redis; let client; const DEFAULT_EXPIRATION = 300; // 5 minutes const state = { dbParams: { provider: 'redis', }, isBrowser: false, }; const config = async (_config) => { if (_config.dbParams === undefined) { throw new Error('Redis instance dbparams are not defined'); } if (_config.dbParams.redisSettings === undefined) { throw new Error('Redis settings in dbparams are not defined'); } if (_config.dbParams.redisSettings.instance === undefined) { throw new Error('Redis instance in dbparams are not defined'); } state.dbParams = _config.dbParams; state.isBrowser = _config.isBrowser; redis = state.dbParams.redisSettings.instance; if ((0, activ_v4_1.isNullOrUndefined)(redis)) { throw new Error('Redis instance is not defined'); } if (!(0, activ_v4_1.isNullOrUndefined)(redis) && (0, activ_v4_1.isNullOrUndefined)(client)) { try { client = redis?.createClient({ url: state.dbParams?.redisSettings?.url, password: state.dbParams?.redisSettings?.password, database: state.dbParams?.redisSettings?.database, disableOfflineQueue: true, }); client.on('error', (error) => { console.error(`REDIS Error : ${error}`); if (!logged) { logged = true; } }); await client.connect(); } catch (err) { console.error(`REDIS Error : ${err}`); } } }; const addData = async (key, data, expiration = DEFAULT_EXPIRATION) => { const payload = data ? JSON.stringify({ key, data, expiration }) : null; if (payload) { await client.set(key, payload); if (expiration > 0) { await client.expire(key, expiration); } } return Promise.resolve(); }; exports.addData = addData; const getData = async (key) => { const info = await client.get(key); if ((0, activ_v4_1.isNullOrUndefined)(info)) { return undefined; } const result = JSON.parse(info); const dataParsed = result?.data ? result.data : undefined; if (dataParsed === null) { return undefined; } return dataParsed; }; exports.getData = getData; const updateData = async (key, data, expiration = DEFAULT_EXPIRATION) => { await client.del(key); await client.set(key, JSON.stringify({ key, data, expiration })); if (expiration > 0) { await client.expire(key, expiration); } return Promise.resolve(); }; exports.updateData = updateData; const removeData = async (key) => { await client.del(key); return Promise.resolve(); }; exports.removeData = removeData; const removeDataByPattern = async (pattern) => { const data = await client.keys(`*${pattern}*`); data?.map(async (key) => { await (0, exports.removeData)(key); }); return Promise.resolve(); }; exports.removeDataByPattern = removeDataByPattern; const resetData = async () => { await client.flushAll(); return Promise.resolve(); }; exports.resetData = resetData; exports.CacheNodeRedisStorageModule = { config, addData: exports.addData, getData: exports.getData, updateData: exports.updateData, removeData: exports.removeData, removeDataByPattern: exports.removeDataByPattern, resetData: exports.resetData, }; //# sourceMappingURL=redis-provider.module.js.map