58 lines
1.2 KiB
JavaScript
58 lines
1.2 KiB
JavaScript
const mysql = require("mysql2");
|
|
const errors = require("../node_modules/mysql2/lib/constants/errors");
|
|
|
|
class Database {
|
|
constructor(config) {
|
|
this.pool = mysql.createPool(config);
|
|
}
|
|
|
|
query(sql, values) {
|
|
return new Promise((resolve, reject) => {
|
|
this.pool.getConnection((err, connection) => {
|
|
if (err) {
|
|
reject(err);
|
|
} else {
|
|
connection.query(sql, values, (err, rows) => {
|
|
if (err) {
|
|
reject(err);
|
|
} else {
|
|
resolve(rows);
|
|
}
|
|
connection.release();
|
|
});
|
|
}
|
|
});
|
|
});
|
|
}
|
|
}
|
|
let dbconfig;
|
|
let guildDB;
|
|
let gameDB;
|
|
let q_guild;
|
|
let q_game;
|
|
|
|
module.exports = {
|
|
configure: (config) => {
|
|
dbconfig = config;
|
|
},
|
|
query_guild: async (sql, values) => {
|
|
if (!guildDB) {
|
|
guildDB = new Database(dbconfig.guild);
|
|
}
|
|
if (!q_guild) {
|
|
q_guild = guildDB.query.bind(guildDB);
|
|
}
|
|
return await q_guild(sql, values);
|
|
},
|
|
query_game: async (sql, values) => {
|
|
if (!gameDB) {
|
|
gameDB = new Database(dbconfig.game);
|
|
}
|
|
if (!q_game) {
|
|
q_game = gameDB.query.bind(gameDB);
|
|
}
|
|
return await q_game(sql, values);
|
|
},
|
|
errors: errors,
|
|
};
|