UNPKG

coders.db

Version:

A better sqlite3 system that is easy to install and easy to use, easy to config, non-locking. Made in coders code (https://discord.gg/cxJbCaqBPu)

271 lines (232 loc) 9.35 kB
const sqlite_Module = require("better-sqlite3"); const langs = ["tr", "en"]; let db = new sqlite_Module("./codersdb.sqlite"); var methods = { get: require("../methods/get.js"), set: require("../methods/set.js"), add: require("../methods/add.js"), subtract: require("../methods/subtract.js"), push: require("../methods/push.js"), delete: require("../methods/delete.js"), has: require("../methods/has.js"), all: require("../methods/all.js"), deleteFile: require("../methods/deleteFile.js"), move: require("../methods/move.js"), unpush: require("../methods/unpush.js") }; var codersdb = require("../package.json") this.messages = this.lang ? require(`../language/${this.lang.toLowerCase()}.json`) : require(`../language/en.json`); //console.log(this.messages["start"].startMsg) /* new options is soon */ module.exports = { version: codersdb.version + "", get: function(key, ops) { this.messages = this.lang ? require(`../language/${this.lang.toLowerCase()}.json`) : require(`../language/en.json`); if (!key) throw new TypeError(console.message["errors"].dontKey); return arbitrate("get", { id: key, ops: ops || {} }); }, set: function(key, value, ops) { this.messages = this.lang ? require(`../language/${this.lang.toLowerCase()}.json`) : require(`../language/en.json`); if (!key) throw new TypeError(this.messages["errors"].dontKey); if (value === undefined) throw new TypeError(this.messages["errors"].dontSetValue); return arbitrate("set", { stringify: true, id: key, data: value, ops: ops || {} }); }, add: function(key, value, ops) { this.messages = this.lang ? require(`../language/${this.lang.toLowerCase()}.json`) : require(`../language/en.json`); if (!key) throw new TypeError(this.messages["errors"].dontKey); if (isNaN(value)) throw new TypeError(this.messages["errors"].dontAddValue); return arbitrate("add", { id: key, data: value, ops: ops || {} }); }, subtract: function(key, value, ops) { this.messages = this.lang ? require(`../language/${this.lang.toLowerCase()}.json`) : require(`../language/en.json`); if (!key) throw new TypeError(this.messages["errors"].dontKey); if (isNaN(value)) throw new TypeError(this.messages["errors"].dontSubtractValue); return arbitrate("subtract", { id: key, data: value, ops: ops || {} }); }, push: function(key, value, ops) { this.messages = this.lang ? require(`../language/${this.lang.toLowerCase()}.json`) : require(`../language/en.json`); if (!key) throw new TypeError(this.messages["errors"].dontKey); if (!value && value != 0) throw new TypeError(this.messages["errors"].dontPushValue); return arbitrate("push", { stringify: true, id: key, data: value, ops: ops || {} }); }, unpush: function(key, value, ops) { this.messages = this.lang ? require(`../language/${this.lang.toLowerCase()}.json`) : require(`../language/en.json`); if (!key) throw new TypeError(this.messages["errors"].dontKey); if (!value && value != 0) throw new TypeError(this.messages["errors"].dontUnPushValue); var emptyArray = []; var newArray = []; if(this.has(key)) { emptyArray = this.get(key); }else return false; if(require("util").isArray(emptyArray)){ emptyArray = emptyArray.filter((XXXX) => XXXX !== value); newArray = emptyArray return arbitrate("set", { stringify: true, id: key, data: newArray, ops: ops || {} }); } }, delete: function(key, ops) { this.messages = this.lang ? require(`../language/${this.lang.toLowerCase()}.json`) : require(`../language/en.json`); if (!key) throw new TypeError(this.messages["errors"].dontKey); return arbitrate("delete", { id: key, ops: ops || {} }); }, has: function(key, ops) { this.messages = this.lang ? require(`../language/${this.lang.toLowerCase()}.json`) : require(`../language/en.json`); if (!key) throw new TypeError(this.messages["errors"].dontKey); return arbitrate("has", { id: key, ops: ops || {} }); }, allData: function(ops) { return arbitrate("all", { ops: ops || {} }); }, deleteFile: function() { require("fs").unlink('codersdb.sqlite', function (err) { if (err) throw err; return true; }); return module.delMsg ? false : true; }, move: function(qdb) { qdb.all().map((data) => { this.set(data.ID, data.data) }) return true; }, setLanguage: function(lang){ this.lang = lang ? (langs.includes(lang.toLowerCase()) ? lang.toLowerCase() : "en") : "en"; this.messages = require(`../language/${this.lang.toLowerCase()}.json`); return lang; }, language: this.lang ? this.lang : "en" }; this.get = function(key, ops) { this.messages = this.lang ? require(`../language/${this.lang.toLowerCase()}.json`) : require(`../language/en.json`); if (!key) throw new TypeError(this.messages["errors"].dontKey); return arbitrate("get", { id: key, ops: ops || {} }, this.tableName); }; //dont promise is function .get() this.set = function(key, value, ops) { this.messages = this.lang ? require(`../language/${this.lang.toLowerCase()}.json`) : require(`../language/en.json`); if (!key) throw new TypeError(this.messages["errors"].dontKey); if (!value && value != 0) throw new TypeError(this.messages["errors"].dontSetValue); return arbitrate( "set", { stringify: true, id: key, data: value, ops: ops || {} }, this.tableName ); }; this.add = function(key, value, ops) { this.messages = this.lang ? require(`../language/${this.lang.toLowerCase()}.json`) : require(`../language/en.json`); if (!key) throw new TypeError(this.messages["errors"].dontKey); if (isNaN(value)) throw new TypeError(this.messages["errors"].dontAddValue); return arbitrate( "add", { id: key, data: value, ops: ops || {} }, this.tableName ); }; this.subtract = function(key, value, ops) { this.messages = this.lang ? require(`../language/${this.lang.toLowerCase()}.json`) : require(`../language/en.json`); if (!key) throw new TypeError(this.messages["errors"].dontKey); if (isNaN(value)) throw new TypeError(this.messages["errors"].dontSubtractValue); return arbitrate( "subtract", { id: key, data: value, ops: ops || {} }, this.tableName ); }; this.push = function(key, value, ops) { this.messages = this.lang ? require(`../language/${this.lang.toLowerCase()}.json`) : require(`../language/en.json`); if (!key) throw new TypeError(this.messages["errors"].dontKey); if (!value && value != 0) throw new TypeError(this.messages["errors"].dontPushValue); return arbitrate( "push", { stringify: true, id: key, data: value, ops: ops || {} }, this.tableName ); }; this.unpush = function(key, value, ops) { this.messages = this.lang ? require(`../language/${this.lang.toLowerCase()}.json`) : require(`../language/en.json`); if (!key) throw new TypeError(this.messages["errors"].dontKey); if (!value && value != 0) throw new TypeError(this.messages["errors"].dontUnPushValue); var emptyArray = []; var newArray = []; if(this.has(key)) { emptyArray = this.get(key); } emptyArray = emptyArray.filter((XXXX) => XXXX !== value); newArray = emptyArray return arbitrate("set", { stringify: true, id: key, data: newArray, ops: ops || {} }); }; this.delete = function(key, ops) { this.messages = this.lang ? require(`../language/${this.lang.toLowerCase()}.json`) : require(`../language/en.json`); if (!key) throw new TypeError(this.messages["errors"].dontKey); return arbitrate("delete", { id: key, ops: ops || {} }, this.tableName); }; this.deleteFile = function() { require("fs").unlink('codersdb.sqlite', function (err) { if (err) throw err; return true; }); return module.delMsg ? false : true; }; this.move = function(qdb) { qdb.all().map(async (qdbData) => { this.set(qdbData.ID, qdbData.data) }) return true; } this.has = function(key, ops) { this.messages = this.lang ? require(`../language/${this.lang.toLowerCase()}.json`) : require(`../language/en.json`); if (!key) throw new TypeError(this.messages["errors"].dontKey); return arbitrate("has", { id: key, ops: ops || {} }, this.tableName); }; this.allData = function(ops) { return arbitrate("all", { ops: ops || {} }, this.tableName); }; function arbitrate(method, params, tableName) { let options = { table: tableName || "codersdb" }; db.prepare( `CREATE TABLE IF NOT EXISTS ${options.table} (ID TEXT, json TEXT)` ).run(); if (params.ops.target && params.ops.target[0] === ".") params.ops.target = params.ops.target.slice(1); if (params.data && params.data === Infinity) throw new TypeError( `You cannot set Infinity into the database @ ID: ${params.id}` ); if (params.stringify) { try { params.data = JSON.stringify(params.data); } catch (e) { throw new TypeError( `Please supply a valid input @ ID: ${params.id}\nError: ${e.message}` ); } } if (params.id && params.id.includes(".")) { let unparsed = params.id.split("."); params.id = unparsed.shift(); params.ops.target = unparsed.join("."); } return methods[method](db, params, options); }