bailiff
Version:
A config manager
84 lines (83 loc) • 4.1 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
result["default"] = mod;
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
const dotenvStore_1 = __importDefault(require("./dotenvStore"));
const fs = __importStar(require("fs"));
const errors_1 = __importDefault(require("../errors"));
const _ = __importStar(require("lodash"));
const mongodb_1 = require("mongodb");
const node_cache_1 = __importDefault(require("node-cache"));
class CentralStore {
static get(name) {
let value = this.nodeCache.get(`bailiff.config.${name}`);
if (value == undefined) {
value = this.__searchInJsonFile(name);
this.nodeCache.set(`bailiff.config.${name}`, value);
}
return value;
}
static loadCentralConfigs() {
return __awaiter(this, void 0, void 0, function* () {
let connection;
try {
connection = yield mongodb_1.MongoClient.connect(this.__mongoUrl(), { promiseLibrary: Promise, useUnifiedTopology: true });
}
catch (e) {
console.error(errors_1.default["001"]);
return;
}
const db = connection.db(dotenvStore_1.default.get("BAILIFF_MONGO_DB"));
const result = yield db.collection(String(dotenvStore_1.default.get("BAILIFF_MONGO_COLLECTION"))).find({ "status": 1 }).toArray();
connection.close();
const jsonConfig = this.__parseResultAsJsonString(result);
const jsongStringConfig = JSON.stringify(jsonConfig);
if (jsongStringConfig != "{}") {
fs.writeFileSync(this.jsonConfigFile, jsongStringConfig);
}
_.forEach(jsonConfig, (value, key) => {
this.nodeCache.set(`bailiff.config.${key}`, value);
});
});
}
static __searchInJsonFile(name) {
if (!fs.existsSync(this.jsonConfigFile))
return;
return JSON.parse(fs.readFileSync(this.jsonConfigFile, 'utf-8') || "{}")[name];
}
}
exports.default = CentralStore;
CentralStore.jsonConfigFile = "./.centralConfig.json";
CentralStore.nodeCache = new node_cache_1.default();
CentralStore.__parseResultAsJsonString = (data) => {
return _.reduce(data, (result, entry) => {
result[entry["name"]] = entry["value"];
return result;
}, {});
};
CentralStore.__mongoUrl = () => {
return dotenvStore_1.default.get("BAILIFF_MONGO_URI") || (function (connString) {
connString += dotenvStore_1.default.get("BAILIFF_MONGO_USER") ? dotenvStore_1.default.get("BAILIFF_MONGO_USER") + ":" : "";
connString += dotenvStore_1.default.get("BAILIFF_MONGO_PASS") ? dotenvStore_1.default.get("BAILIFF_MONGO_PASS") + "@" : "";
connString += dotenvStore_1.default.get("BAILIFF_MONGO_HOST") ? dotenvStore_1.default.get("BAILIFF_MONGO_HOST") : "";
connString += dotenvStore_1.default.get("BAILIFF_MONGO_PORT") ? ":" + dotenvStore_1.default.get("BAILIFF_MONGO_PORT") : "";
return connString;
}("mongodb://"));
};