UNPKG

nerandb

Version:

JSON veritabanı modülü

80 lines (73 loc) 2.27 kB
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 }