UNPKG

@ixily/activ

Version:

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

115 lines 3.62 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.CacheNodeLevelStorageModule = exports.resetData = exports.removeData = exports.updateData = exports.getData = exports.addData = void 0; const activ_v4_1 = require("../../activ-v4"); const fs_1 = __importDefault(require("fs")); let level; let db; const DEFAULT_EXPIRATION = 300; // 5 minutes const state = { dbParams: { provider: 'level', }, isBrowser: false, }; const config = async (_config) => { if (_config.dbParams === undefined) { throw new Error('Level instance dbparams are not defined'); } if (_config.dbParams.levelSettings === undefined) { throw new Error('Level settings in dbparams are not defined'); } if (_config.dbParams.levelSettings.instance === undefined) { throw new Error('Level instance in dbparams are not defined'); } state.dbParams = _config.dbParams; state.isBrowser = _config.isBrowser; level = state.dbParams.levelSettings.instance; if ((0, activ_v4_1.isNullOrUndefined)(level)) { throw new Error('Level instance is not defined'); } if (!(0, activ_v4_1.isNullOrUndefined)(level) && (0, activ_v4_1.isNullOrUndefined)(db)) { try { db = new level(state.dbParams.levelSettings.database, { valueEncoding: 'utf8', }); } 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 db.put(key, payload); // if (expiration > 0) { // await client.expire(key, expiration) // } } return Promise.resolve(); }; exports.addData = addData; const getData = async (key) => { let info = undefined; try { info = await db.get(key); } catch (err) { if (err.notFound === true) { info = undefined; } else { throw err; } } 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) => { (0, exports.addData)(key, data, expiration); }; exports.updateData = updateData; const removeData = async (key) => { await db.del(key); return Promise.resolve(); }; exports.removeData = removeData; // export const removeDataByPattern = async (pattern: string): Promise<void> => { // const data: any = await client.keys(`*${pattern}*`) // data?.map(async (key: any) => { // await removeData(key) // }) // return Promise.resolve() // } const resetData = async () => { await db.close(); fs_1.default.rmSync(state.dbParams.levelSettings.database, { recursive: true, force: true, }); await db.open(); return Promise.resolve(); }; exports.resetData = resetData; exports.CacheNodeLevelStorageModule = { config, addData: exports.addData, getData: exports.getData, updateData: exports.updateData, removeData: exports.removeData, // removeDataByPattern, resetData: exports.resetData, }; //# sourceMappingURL=level-provider.module..js.map