@ixily/activ
Version:
Alpha Capture Trade Idea Verification. Blockchain ownership proven trade ideas and strategies.
115 lines • 3.62 kB
JavaScript
;
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