r2/shared/lib/db.js
2023-05-12 13:52:40 +08:00

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,
};