UNPKG

justdata

Version:

a JSON/YAML/LocalStorage database module

310 lines (216 loc) 6.42 kB
const fs = require("fs"); const functions = require("../Sistemler/sistem.js"); class JsonDB { constructor(options) { this.dbName = options["dbName"]; this.dbFolder = options["dbFolder"]; this.BlankData = options["BlankData"] ? (typeof options["BlankData"] === "boolean" ? options["BlankData"] : false) : false; this.readable = options["readable"] ? (typeof options["readable"] === "boolean" ? true : false) : false; functions.fetchFiles(this.dbFolder, this.dbName); } set(db, data) { functions.fetchFiles(this.dbFolder, this.dbName); if(!db) { throw new TypeError(this.message["hatalar"]["isim"]); } if(!data) { throw new TypeError(this.message["hatalar"]["data"]); } var content = JSON.parse(fs.readFileSync(`./${this.dbFolder}/${this.dbName}.json`, "utf8")); functions.set(db, data, content); if(this.readable) { fs.writeFileSync(`./${this.dbFolder}/${this.dbName}.json`, JSON.stringify(content, null, 2)); } else { fs.writeFileSync(`./${this.dbFolder}/${this.dbName}.json`, JSON.stringify(content)); } return this.get(db); } get(db) { if(!db) { throw new TypeError(this.message["hatalar"]["isim"]); } var content = JSON.parse(fs.readFileSync(`./${this.dbFolder}/${this.dbName}.json`, "utf8")); try { return functions.get(content, ...db.split(".")); } catch(err) { return undefined; } } fetch(db) { if(!db) { throw new TypeError(this.message["hatalar"]["isim"]); } var content = JSON.parse(fs.readFileSync(`./${this.dbFolder}/${this.dbName}.json`, "utf8")); try { return functions.get(content, ...db.split(".")); } catch(err) { return undefined; } } has(db) { if(!db) { throw new TypeError(this.message["hatalar"]["isim"]); } var content = JSON.parse(fs.readFileSync(`./${this.dbFolder}/${this.dbName}.json`, "utf8")); try { return functions.get(content, ...db.split(".")) ? true : false; } catch(err) { return false; } } delete(db) { functions.fetchFiles(this.dbFolder, this.dbName); if(!db) { throw new TypeError(this.message["hatalar"]["isim"]); } var content = JSON.parse(fs.readFileSync(`./${this.dbFolder}/${this.dbName}.json`, "utf8")); if(!this.get(db)) { return false; } functions.remove(content, db); if(this.noBlankData === true) { functions.removeEmptyData(content); } if(this.readable) { fs.writeFileSync(`./${this.dbFolder}/${this.dbName}.json`, JSON.stringify(content, null, 2)); } else { fs.writeFileSync(`./${this.dbFolder}/${this.dbName}.json`, JSON.stringify(content)); } return true; } add(db, number) { if(!db) { throw new TypeError(this.message["hatalar"]["isim"]); } if(!number) { throw new TypeError(this.message["hatalar"]["data"]); } if(isNaN(number)) { throw new TypeError(this.message["hatalar"]["numara"]); } this.set(db, Number(this.get(db) ? (isNaN(this.get(db)) ? Number(number) : this.get(db)+Number(number)) : Number(number))); return this.get(db); } subtract(db, number) { if(!db) { throw new TypeError(this.message["hatalar"]["isim"]); } if(!number) { throw new TypeError(this.message["hatalar"]["data"]); } if(isNaN(number)) { throw new TypeError(this.message["hatalar"]["numara"]); } if(this.get(db)-number < 1) { this.delete(db); return (this.get(db) || 0); } if(!this.get(db)) { this.delete(db); return (this.get(db) || 0); } this.set(db, this.get(db) ? (this.get(db)-Number(number) <= 1 ? 1 : (isNaN(this.get(db)) ? 1 : this.get(db)-Number(number)) || 1) : 1); return this.get(db); } push(db, data) { if(!db) { throw new TypeError(this.message["hatalar"]["isim"]); } if(!data) { throw new TypeError(this.message["hatalar"]["data"]); } var arr = []; if(this.get(db)) { if(typeof this.get(db) !== "object") { arr = []; } else { arr = this.get(db); } } arr.push(data); this.set(db, arr); return this.get(db); } unpush(db, data) { if(!db) { throw new TypeError(this.message["hatalar"]["isim"]); } if(!data) { throw new TypeError(this.message["hatalar"]["data"]); } var arr = []; if(this.get(db)) { arr = this.get(db); } arr = arr.filter((x) => x !== data); this.set(db, arr); return this.get(db); } delByPriority(db, number) { if(!db) { throw new TypeError(this.message["hatalar"]["data"]); } if(!number) { throw new TypeError(this.message["hatalar"]["numara"]); } if(isNaN(number)) { throw new TypeError(this.message["hatalar"]["numara"]); } if(!this.get(db) || this.get(db).length < 1) { return false; } let content = this.get(db); let neww = []; if (typeof content !== "object") { return false; } for (let a = 0; a < content.length; a++) { if (a !== (number-1)) { neww.push(content[`${a}`]); } } this.set(db, neww); return this.get(db); } setByPriority(db, data, number) { if(!db) { throw new TypeError(this.message["hatalar"]["data"]); } if(!data) { throw new TypeError(this.message["hatalar"]["data"]); } if(!number) { throw new TypeError(this.message["hatalar"]["numara"]); } if(isNaN(number)) { throw new TypeError(this.message["hatalar"]["numara"]); } if(!this.get(db) || this.get(db).length < 1) { return false; } let content = this.get(db); let neww = []; if (typeof content !== "object") { return false; } for (let a = 0; a < content.length; a++) { let val = content[`${a}`]; if(a === (number-1)) { neww.push(data); } else { neww.push(val); } } this.set(db, neww); return this.get(db); } all() { var content = JSON.parse(fs.readFileSync(`./${this.dbFolder}/${this.dbName}.json`, "utf8")); return content; } deleteAll() { fs.writeFileSync(`./${this.dbFolder}/${this.dbName}.json`, JSON.stringify({})); return true; } } module.exports = JsonDB;