discord-client
Version:
Discord bot framework, create Discord bots with Discord.js better and faster.
138 lines (116 loc) • 3.62 kB
JavaScript
// Outdated.
var fs = require('fs');
var path = require('path');
function dbExists(name) {
return fs.existsSync(path.join(__dirname, ('db/' + name + '.json')));
}
function create(name, cb) {
var base = {}
fs.writeFileSync(path.join(__dirname, 'db/' + name + '.json'), JSON.stringify(base));
}
function get(name, cb) {
if(typeof(cb) === 'function') {
if(fs.existsSync(path.join(__dirname, ('db/' + name + '.json')))) {
var i = JSON.parse(fs.readFileSync(path.join(__dirname, 'db/' + name + '.json')));
var get = {
get: function(data, key) {
if(i.hasOwnProperty(data)) {
var j = i[data];
if(Array.isArray(j)) {
if(!key) {
var arr = [];
for(var s = 1; s <= j.length; s++) {
arr.push(j[s-1]['data']);
}
return arr;
}
var x = 0;
for(var s = 1; s <= j.length; s++) {
if(j[s-1]['data'] == key) x = s-1;
}
if(containsObject(j, 'data', key)) {
return j[x]['data'];
}
else throw Error('\'' + key + '\' doesn\'t exist in ' + name);
} else {
return i[data][data]['data'];
}
} else {
throw Error('\'' + data + '\' doesn\'t exist in ' + name);
}
},
add: function(data) {
var x = data.split(':');
if(data.split(': ')) x = data.split(': ');
if(!x[1] || x[2]) {
throw Error('Incorrect keys');
} else {
var base = {}
base[x[0]] = {data: x[1]}
i[x[0]] = base;
fs.writeFileSync(path.join(__dirname, 'db/' + name + '.json'), JSON.stringify(i));
}
},
remove: function(data) {
var x = data.split(':');
if(data.split(': ')) x = data.split(': ');
if(!i[x[0]]) throw Error('\'' + x[0] + '\' doesn\'t exist in ' + x[1]);
if(!x[1] || x[2]) {
throw Error('Incorrect keys');
} else {
if(Array.isArray(i[x[0]])) {
var index = i[x[0]].indexOf(x[1]);
console.log(i[x[0]].indexOf(x[1]));
i[x[0]].splice(x[1], index);
fs.writeFileSync(path.join(__dirname, 'db/' + name + '.json'), JSON.stringify(i));
} else {
delete i[x[0]]
fs.writeFileSync(path.join(__dirname, 'db/' + name + '.json'), JSON.stringify(i));
}
}
},
push: function(data, text) {
var x = data.split(':');
if(data.split(': ')) x = data.split(': ');
if(!i[x[0]]) throw Error('You can only push to an existing array or string.');
if(!x[1]) {
throw Error('Incorrect keys');
} else {
if(!Array.isArray(i[x[0]])) {
var a = i[x[0]][x[0]];
var base = {
data: x[1]
}
var newArray = [a, base]
delete i[x[0]];
i[x[0]] = newArray;
fs.writeFileSync(path.join(__dirname, 'db/' + name + '.json'), JSON.stringify(i));
} else {
var base = {
data: x[1]
}
i[x[0]].push(base);
fs.writeFileSync(path.join(__dirname, 'db/' + name + '.json'), JSON.stringify(i));
}
}
}
}
return cb(get)
} else {
return cb('Cannot find \'' + name + '\'.');
}
} else throw Error('cb is not a function')
}
function containsObject(list, prop, val) {
if (list.length > 0 ) {
for (i in list) {
if (list[i][prop] === val) {
return true;
}
}
}
return false;
}
exports.dbExists = dbExists;
exports.create = create;
exports.get = get;