mirror of
https://github.com/litruv/DAdmin.git
synced 2026-07-24 02:36:11 +10:00
Remade database connections, based on promises now
This commit is contained in:
211
database.js
211
database.js
@@ -1,8 +1,11 @@
|
|||||||
var mysql = require('mysql');
|
const mysql = require('mysql')
|
||||||
var config = require('./dbconfig.json');
|
const fs = require('fs')
|
||||||
|
|
||||||
|
|
||||||
|
var connection
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
checkguilds: function (discordclient) {
|
checkguilds: (discordclient) => {
|
||||||
discordclient.guilds.forEach(guild => {
|
discordclient.guilds.forEach(guild => {
|
||||||
check_guild_exists(discordclient, guild.id).then((r) => {
|
check_guild_exists(discordclient, guild.id).then((r) => {
|
||||||
console.log(r);
|
console.log(r);
|
||||||
@@ -13,141 +16,111 @@ module.exports = {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
checkusers: async function (client, guild) {
|
get_setting: (settingname, guildID = 0) => {
|
||||||
await guild.members.forEach(member => {
|
return new Promise((resolve, reject) => {
|
||||||
check_user_exists(client, member.id, guild.id);
|
readSetting(settingname, guildID).then((settingreturn) => {
|
||||||
});
|
resolve(settingreturn.value);
|
||||||
|
}).catch(err => {
|
||||||
|
reject(console.error(`Error: with settingname '${settingname}' on Guild ${guildID} ` + err))
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
get_setting: async function (settingname, guildID = 0) {
|
set_setting: (guildID, settingname, value) => {
|
||||||
try {
|
writeSetting(settingname, value, guildID);
|
||||||
var settingreturn = await sql_q(settingname, guildID);
|
|
||||||
return settingreturn[0].value;
|
|
||||||
}
|
|
||||||
catch (err) {
|
|
||||||
console.error(`Error: with settingname '${settingname}' on Guild ${guildID} ` + err)
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
|
||||||
set_setting: async function (guildID, settingname, value) {
|
connect: () => {
|
||||||
sql_qs(guildID, settingname, value);
|
return new Promise((resolve, reject) => {
|
||||||
},
|
readConfig('dbconfig.json')
|
||||||
|
.then(config => {
|
||||||
connect: async function () {
|
resolve(dbConnect(config))
|
||||||
this.con = await connecttodb();
|
})
|
||||||
},
|
})
|
||||||
|
|
||||||
user_add_command(userid, guildID) {
|
|
||||||
increment_user_commands(userid, guildID);
|
|
||||||
}
|
}
|
||||||
};
|
|
||||||
|
|
||||||
function connecttodb() {
|
|
||||||
new Promise(resolve => {
|
|
||||||
this.con = mysql.createConnection({
|
|
||||||
host: config.mysql_host,
|
|
||||||
user: config.mysql_user,
|
|
||||||
password: config.mysql_password,
|
|
||||||
database: config.mysql_db,
|
|
||||||
charset: "utf8mb4_unicode_ci"
|
|
||||||
});
|
|
||||||
|
|
||||||
resolve(this.con);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
async function check_user_exists(client, userid, guildid) {
|
|
||||||
var exists = await sql_user(client, userid, guildid);
|
|
||||||
return exists[0];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function sql_user(client, userid, guildid) {
|
function readConfig(configFile, formatting = 'utf8') {
|
||||||
return new Promise(resolve => {
|
return new Promise((resolve, reject) => {
|
||||||
con.query("SELECT AI_ID FROM users WHERE ID = '" + userid + "'", function (err, result, fields) {
|
fs.readFile(configFile, formatting, function (err, data) {
|
||||||
if (err) throw err;
|
if (err) {
|
||||||
|
if (err.code == "ENOENT") {
|
||||||
var user = client.guilds.get(guildid).members.get(userid);
|
console.error("Copy dbconfig.template.json to dbconfig.json and edit first")
|
||||||
var username = user.displayName;
|
reject(`Error reading config file ${configFile} (${formatting})`)
|
||||||
var usericon = user.user.avatarURL;
|
// process.exit()
|
||||||
var bot = user.user.bot;
|
|
||||||
var discriminator = user.user.discriminator;
|
|
||||||
var actualusername = user.user.username;
|
|
||||||
|
|
||||||
if (result.length == 0)
|
|
||||||
var sql = `INSERT INTO users (ID, name, username, avatarURL, bot, discriminator, serverID, joined) VALUES (${con.escape(userid)}, ${con.escape(username)}, ${con.escape(actualusername)}, ${con.escape(usericon)}, ${con.escape(bot)}, ${con.escape(discriminator)}, ${con.escape(guildid)}, ${con.escape(user.joinedTimestamp)});`;
|
|
||||||
|
|
||||||
else
|
|
||||||
var sql = `UPDATE users SET name=${con.escape(username)}, avatarURL=${con.escape(usericon)}, discriminator=${con.escape(discriminator)} WHERE (ID=${con.escape(userid)} AND serverID=${con.escape(guildid)});`;
|
|
||||||
|
|
||||||
con.query(sql, function (err, result) {
|
|
||||||
if (err) throw err;
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function sql_guild(client, guildid) {
|
|
||||||
return new Promise(resolve => {
|
|
||||||
con.query("SELECT AI_ID FROM servers WHERE ServerID = '" + guildid + "'", function (err, result, fields) {
|
|
||||||
if (err) throw err;
|
|
||||||
if (result.length == 0) {
|
|
||||||
var guild = client.guilds.get(guildid);
|
|
||||||
var guildname = guild.name;
|
|
||||||
var guildicon = guild.iconURL;
|
|
||||||
|
|
||||||
if (guildname != null) {
|
|
||||||
var sql = "INSERT INTO `servers` (`ServerID`, `ServerName`, `ServerIcon`) VALUES (" + con.escape(guildid) + ", " + con.escape(guildname) + ", " + con.escape(guildicon) + ");";
|
|
||||||
|
|
||||||
con.query(sql, function (err, result) {
|
|
||||||
if (err) throw err;
|
|
||||||
console.log(`${guildname} inserted into DB`);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
reject(`Other Error reading config file ${configFile} (${formatting} - ${err})`)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (!JSON.parse(data))
|
||||||
|
reject('Error parsing config file, invalid JSON')
|
||||||
|
let dbsettings = JSON.parse(data)
|
||||||
|
|
||||||
|
dbsettings.user = dbsettings.mysql_user
|
||||||
|
dbsettings.host = dbsettings.mysql_host
|
||||||
|
dbsettings.password = dbsettings.mysql_password
|
||||||
|
dbsettings.database = dbsettings.mysql_db
|
||||||
|
|
||||||
|
resolve(dbsettings)
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
async function check_guild_exists(client, guildid) {
|
function writeSetting(settingName, settingValue, guildId = 0) {
|
||||||
var exists = await sql_guild(client, guildid);
|
return new Promise((resolve, reject) => {
|
||||||
return exists[0];
|
setTimeout(reject, 1000, new Error("Didn't write something within a second"))
|
||||||
|
|
||||||
|
connection.query(`INSERT INTO settings (setting, value, serverID) VALUES ('${settingName}', '${settingValue}', '${guildId}')`,
|
||||||
|
function (error, results, fields) {
|
||||||
|
if (error)
|
||||||
|
reject(error)
|
||||||
|
resolve(results)
|
||||||
|
})
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
function sql_q(settingname, serverID = 0) {
|
function readSetting(settingName, guildId = 0) {
|
||||||
return new Promise(resolve => {
|
return new Promise((resolve, reject) => {
|
||||||
this.con.query(`SELECT value FROM settings WHERE setting = ${con.escape(settingname)} AND serverID = ${con.escape(serverID)}`, function (err, result, fields) {
|
setTimeout(reject, 1000, new Error("Didn't read something within a second"))
|
||||||
if (err) throw err;
|
|
||||||
resolve(result);
|
connection.query(`SELECT * FROM settings WHERE setting='${settingName}' AND serverID='${guildId}'`,
|
||||||
});
|
function (error, results, fields) {
|
||||||
});
|
if (error)
|
||||||
|
reject(error)
|
||||||
|
//console.log(results)
|
||||||
|
resolve(results[0])
|
||||||
|
})
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
function sql_qs(guildid, settingname, value) {
|
function deleteSetting(settingName, guildId = 0) {
|
||||||
return new Promise(resolve => {
|
return new Promise((resolve, reject) => {
|
||||||
this.con.query(`SELECT value FROM settings WHERE setting = ${con.escape(settingname)} AND serverID = ${con.escape(guildid)}`, function (err, result, fields) {
|
setTimeout(reject, 1000, new Error("Didn't delete something within a second"))
|
||||||
if (err) throw err;
|
|
||||||
|
|
||||||
if (result.length == 0)
|
connection.query(`DELETE FROM settings WHERE setting='${settingName}' AND serverID='${guildId}'`,
|
||||||
var sql = `INSERT INTO settings (setting, value, serverID) VALUES (${con.escape(settingname)}, ${con.escape(value)}, ${con.escape(guildid)});`;
|
function (error, results, fields) {
|
||||||
|
if (error)
|
||||||
else
|
reject(error)
|
||||||
var sql = `UPDATE settings SET value=${con.escape(value)} WHERE (setting=${con.escape(settingname)} AND serverID=${con.escape(guildid)});`;
|
resolve(results)
|
||||||
|
})
|
||||||
con.query(sql, function (err, result) {
|
})
|
||||||
if (err) throw err;
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function increment_user_commands(userid, guildid) {
|
function dbConnect(config) {
|
||||||
this.con.query(`UPDATE users SET usedCommands=usedCommands+1 WHERE (ID=${con.escape(userid)} AND serverID=${con.escape(guildid)})`, function (err, result, fields) {
|
return new Promise((resolve, reject) => {
|
||||||
|
let conn = mysql.createConnection(config)
|
||||||
|
|
||||||
//UPDATE images SET counter=counter+1 WHERE image_id=15
|
conn.connect(error => {
|
||||||
if (err) throw err;
|
if (error)
|
||||||
});
|
reject("Couldn't connect to db" + error)
|
||||||
|
connection = conn;
|
||||||
|
resolve(conn)
|
||||||
|
})
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log("=MySQL====================");
|
function closeConnection() {
|
||||||
console.log("Logged in as " + config.mysql_user + " to " + config.mysql_host);
|
connection.end()
|
||||||
|
}
|
||||||
12
index.js
12
index.js
@@ -14,10 +14,14 @@ const colors = require('colors');
|
|||||||
//Database Connection
|
//Database Connection
|
||||||
client.database.connect().then(con => {
|
client.database.connect().then(con => {
|
||||||
try {
|
try {
|
||||||
client.database.get_setting('token').then(token => {
|
console.log("=Discord==================")
|
||||||
console.log("=Discord==================")
|
client.database.get_setting('token')
|
||||||
client.login(token)
|
.then(token => {
|
||||||
})
|
client.login(token)
|
||||||
|
})
|
||||||
|
.catch(e => {
|
||||||
|
console.log("Error getting token")
|
||||||
|
})
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.log(e)
|
console.log(e)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user