justdata
Version:
a JSON/YAML/LocalStorage database module
237 lines (181 loc) • 5.07 kB
JavaScript
const langs = ["tr", "en","de","ru","az"];
module.exports = {
setOptions() {
var adapter = this.adapter || require("../Just/jsondb")
this.options = {
dbName: "justdata",
dbFolder: "JustBase",
BlankData: this.BlankData || false,
readable: this.readable || false,
language: this.lang ? this.lang : "tr"
}
this.message = this.lang ? require(`../dil/${this.lang.toLowerCase()}.json`) : require(`../dil/tr.json`);
this.adapter = adapter.set ? adapter : new adapter(this.options);
},
setLanguage(lang) {
this.lang = lang ? (langs.includes(lang.toLowerCase()) ? lang.toLowerCase() : "tr") : "tr";
this.message = require(`../dil/${this.lang.toLowerCase()}.json`);
this.setOptions();
return lang;
},
setAdapter(adapter) {
var adapter = require("../Just/"+adapter) || require("../Just/jsondb")
this.setOptions();
return true;
},
setReadable(boolean) {
this.readable = boolean ? (typeof boolean === "boolean" ? true : false) : false;
this.setOptions();
return this.readable;
},
setBlankData(boolean) {
this.BlankData = boolean ? (typeof boolean === "boolean" ? boolean : false) : false;
this.setOptions();
return this.BlankData;
},
set(db, data) {
this.setOptions();
if(!db) {
throw new TypeError(this.message["hatalar"]["isim"]);
}
if(!data) {
throw new TypeError(this.message["hatalar"]["data"]);
}
return this.adapter.set(db, data);
},
get(db) {
this.setOptions();
if(!db) {
throw new TypeError(this.message["hatalar"]["isim"]);
}
try {
return this.adapter.get(db);
} catch(err) {
return undefined;
}
},
fetch(db) {
this.setOptions();
if(!db) {
throw new TypeError(this.message["hatalar"]["isim"]);
}
try {
return this.adapter.get(db);
} catch(err) {
return undefined;
}
},
has(db) {
this.setOptions();
if(!db) {
throw new TypeError(this.message["hatalar"]["isim"]);
}
try {
return this.adapter.get(db) ? true : false;
} catch(err) {
return false;
}
},
delete(db) {
this.setOptions();
if(!db) {
throw new TypeError(this.message["hatalar"]["isim"]);
}
try {
return this.adapter.delete(db);
} catch (err) {
return false;
}
},
add(db, number) {
this.setOptions();
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"]);
}
return this.adapter.add(db, number);
},
subtract(db, number) {
this.setOptions();
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"]);
}
return this.adapter.subtract(db, number);
},
push(db, data) {
this.setOptions();
if(!db) {
throw new TypeError(this.message["hatalar"]["isim"]);
}
if(!data) {
throw new TypeError(this.message["hatalar"]["data"]);
}
return this.adapter.push(db, data);
},
unpush(db, data) {
this.setOptions();
if(!db) {
throw new TypeError(this.message["hatalar"]["isim"]);
}
if(!data) {
throw new TypeError(this.message["hatalar"]["data"]);
}
return this.adapter.unpush(db, data);
},
delByPriority(db, number) {
this.setOptions();
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"]);
}
return this.adapter.delByPriority(db, number);
},
setByPriority(db, data, number) {
this.setOptions();
if(!db) {
throw new TypeError(this.message["hatalar"]["isim"]);
}
if(!data) {
throw new TypeError(this.message["hatalar"]["data"]);
}
if(!number) {
throw new TypeError(this.message["hatalar"]["data"]);
}
if(isNaN(number)) {
throw new TypeError(this.message["hatalar"]["numara"]);
}
return this.adapter.delByPriority(db, number);
},
all() {
this.setOptions();
return this.adapter.all();
},
deleteAll() {
this.setOptions();
return this.adapter.deleteAll();
},
move(quickDB) {
console.log("QuickDB to JustData: Started copying database.")
quickDB.fetchAll().map((data) => {
this.adapter.set(data.ID, data.data)
console.log(`QuickDB to JustData: Copied ${data.ID}`)
})
return true;
}
}