@onurege3467/zerohelper
Version:
ZeroHelper is a versatile JavaScript library offering helper functions and database utilities for developers. It supports MongoDB, MySQL, SQLite, Redis, and PostgreSQL.
41 lines (36 loc) • 1.07 kB
JavaScript
;
const get = require("lodash/get");
const errors = require("../errors/strings.js");
module.exports = async function (key, table = "default") {
if (!key || typeof key !== "string")
throw new TypeError(errors.key.replace("{received}", typeof key));
let tables = await this.tables();
if (!tables.includes(table)) return null;
let keys = key.split("."),
keys2 = key.split(".");
if (keys.length > 1) {
key = keys.shift();
}
let res = await this.query({
sql: `SELECT value FROM \`${table}\` WHERE \`key_name\` = ?`,
values: [key],
});
if (!res.length) return null;
let value = null;
if (res.length) {
value = res[0].value;
if (!isNaN(value)) {
value = Number(value);
}
try {
value = JSON.parse(value);
} catch (e) {}
}
if (keys2.length > 1 && typeof value === "object") {
value = get(value, keys.join("."));
if (value == undefined) value = null;
} else if (keys2.length > 1) {
throw new ReferenceError(errors.targetNotObject.replace("{key}", key));
}
return value;
};