nerandb
Version:
JSON veritabanı modülü
80 lines (73 loc) • 2.27 kB
JavaScript
const fs = require("fs");
const set = function (path, value, object) {
let pathList = path.split(".");
let length = pathList.length;
for (let i = 0; i < length - 1; i++) {
let elem = pathList[`${i}`];
if (typeof object[`${elem}`] !== "object") {
object[`${elem}`] = {};
}
object = object[`${elem}`];
}
object[pathList[`${length - 1}`]] = value;
};
const get = function (object, ...data) {
return data.reduce(function (acc, key) {
return acc[`${key}`];
}, object);
};
const remove = function (object, path) {
if (!object || !path) return;
if (typeof path === "string") {
path = path.split(".");
}
for (let i = 0; i < path.length - 1; i++) {
object = object[path[`${i}`]];
if (typeof object === "undefined") return;
}
delete object[path.pop()];
};
const fetchFiles = function (databaseFolder, databaseName) {
if (fs.existsSync(`${databaseFolder}`) === false) {
fs.mkdirSync(`${databaseFolder}`);
if (fs.existsSync(`./${databaseFolder}/${databaseName}.json`) === false) {
fs.writeFileSync(`./${databaseFolder}/${databaseName}.json`, "{}");
return;
}
} else {
if (fs.existsSync(`./${databaseFolder}/${databaseName}.json`) === false) {
fs.writeFileSync(`./${databaseFolder}/${databaseName}.json`, "{}");
}
}
};
const removeEmptyData = function (object) {
let remove = function (object) {
for (let key of Object.keys(object)) {
if (object[`${key}`] && typeof object[`${key}`] === "object") {
remove(object[`${key}`]);
} else if (object[`${key}`] === null || object[`${key}`] === "") {
delete object[`${key}`];
}
if (typeof object[`${key}`] === "object" && Object.keys(object[`${key}`]).length === 0) {
delete object[`${key}`];
}
}
};
for (let key of Object.keys(object)) {
if (object[`${key}`] && typeof object[`${key}`] === "object") {
remove(object[`${key}`]);
} else if (object[`${key}`] === null || object[`${key}`] === "") {
delete object[`${key}`];
}
if (typeof object[`${key}`] === "object" && Object.keys(object[`${key}`]).length === 0) {
delete object[`${key}`];
}
}
};
module.exports = {
set,
get,
remove,
fetchFiles,
removeEmptyData
}