Skip to content

Commit 962ae9d

Browse files
authored
Merge pull request #489 from aternosorg/mysql2
ugrade to mysql2
2 parents 9dcac27 + 62443e0 commit 962ae9d

File tree

2 files changed

+22
-39
lines changed

2 files changed

+22
-39
lines changed

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
"discord.js": "^13.5.0",
2929
"fuse.js": "^6.4.6",
3030
"got": "^11.8.2",
31-
"mysql": "^2.18.1",
31+
"mysql2": "^2.3.3",
3232
"string-similarity": "^4.0.4",
3333
"turndown": "^7.1.1"
3434
},

src/Database.js

+21-38
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1-
const mysql = require('mysql');
1+
/**
2+
* @type {import('mysql2/promise.d.ts')}
3+
*/
4+
const mysql = require('mysql2/promise');
25
const monitor = require('./Monitor').getInstance();
36
const {Snowflake} = require('discord.js');
47

@@ -39,7 +42,7 @@ class Database {
3942
if (this.con !== null) {
4043
return resolve();
4144
}
42-
this.waiting.push([resolve, reject]);
45+
this.waiting.push({resolve, reject});
4346
});
4447
}
4548

@@ -48,23 +51,17 @@ class Database {
4851
*
4952
* @private
5053
*/
51-
_connect() {
52-
let newCon = mysql.createConnection(this.options);
53-
newCon.on('error', (err) => {
54-
newCon.end();
55-
this._handleConnectionError(err);
56-
});
57-
newCon.connect((err) => {
58-
if (err) {
59-
newCon.end();
60-
return this._handleConnectionError(err);
61-
}
62-
this.con = newCon;
63-
for (let w of this.waiting) {
64-
w[0]();
54+
async _connect() {
55+
try {
56+
this.con = await mysql.createConnection(this.options);
57+
for (let waiting of this.waiting) {
58+
waiting.resolve();
6559
}
6660
this.waiting = [];
67-
});
61+
}
62+
catch (error) {
63+
return this._handleConnectionError(error);
64+
}
6865
}
6966

7067
/**
@@ -74,15 +71,16 @@ class Database {
7471
* @private
7572
*/
7673
_handleConnectionError(err) {
74+
console.error('A fatal database error occurred', err);
7775
monitor.error('A fatal database error occurred', err);
7876
if (err.code === 'ER_ACCESS_DENIED_ERROR') {
7977
console.error('Access to database denied. Make sure your config and database are set up correctly!');
8078
process.exit(1);
8179
}
8280

8381
this.con = null;
84-
for (let w of this.waiting) {
85-
w[1](err);
82+
for (let waiting of this.waiting) {
83+
waiting.reject(err);
8684
}
8785
this.waiting = [];
8886
setTimeout(this._connect.bind(this), 5000);
@@ -108,24 +106,9 @@ class Database {
108106
* @param args
109107
* @returns {Promise<Object[]>}
110108
*/
111-
queryAll(...args) {
112-
return new Promise((resolve, reject) => {
113-
this.waitForConnection()
114-
.then(() => {
115-
this.con.query(...args, (err, res) => {
116-
if (err) {
117-
if(err.fatal){
118-
this.con.end();
119-
this._handleConnectionError(err);
120-
return this.queryAll(...args).then(resolve).catch(reject);
121-
}
122-
return reject(err);
123-
}
124-
resolve(res);
125-
});
126-
})
127-
.catch(reject);
128-
});
109+
async queryAll(...args) {
110+
await this.waitForConnection();
111+
return (await this.con.query(...args))[0];
129112
}
130113

131114
/**
@@ -135,7 +118,7 @@ class Database {
135118
* @returns {Promise<Object|null>}
136119
*/
137120
async query(...args) {
138-
return (await this.queryAll(...args))[0] || null;
121+
return (await this.queryAll(...args))[0] ?? null;
139122
}
140123

141124
/**

0 commit comments

Comments
 (0)