Generalize store quering functions

This commit is contained in:
Zaid Abdulla committed 2018-12-26 00:22:07 -08:00
1 parent 93c6a4dfcd
commit 9b827c5f5e
26 files changed
+1362 -321

No files matched your search

+61 -2
View File
@@ -1,6 +1,65 @@
"use strict";
const filterParser = require("../common/filter-parser.js");
const Filter = require("../common/filter.js");
exports.PORT = 3000;
exports.GENIEACS_NBI = "http://127.0.0.1:7557/";
const configFile = require("../config.json");
const cache = {};
function parse(name, value) {
if (/^ui\.overview\.charts\.[^.]+\.slices\.[^.]+\.filter$/.test(name))
return new Filter(value);
return value;
}
function get(name) {
let v = cache[name];
if (v === undefined) {
v = configFile[name];
if (v != null) {
v = parse(name, v);
} else {
const prefix = `${name}.`;
for (let k of Object.keys(configFile))
if (k.startsWith(prefix)) {
v = v || {};
let ar = k.slice(prefix.length).split(".");
let ref = v;
for (let a of ar.slice(0, -1)) ref = ref[a] = ref[a] || {};
ref[ar[ar.length - 1]] = parse(k, configFile[k]);
}
}
if (v) cache[name] = v;
else cache[name] = null;
}
return v;
}
function getClientConfig() {
const regex = [
/^ui\.pageSize$/,
/^ui\.filters\.[^.]+\.label$/,
/^ui\.filters\.[^.]+\.parameter$/,
/^ui\.filters\.[^.]+\.type$/,
/^ui\.index\./,
/^ui\.overview\.groups\./,
/^ui\.overview\.charts\./,
/^ui\.device/
];
const clientConfig = {};
for (let [k, v] of Object.entries(configFile))
for (let r of regex)
if (r.test(k)) {
clientConfig[k] = v;
break;
}
return clientConfig;
}
exports.get = get;
exports.getClientConfig = getClientConfig;