Skip to content

Commit b2387fc

Browse files
committed
refactor: minor tweaks and cleanup
Primarily moving connectionOptions fully to config. Removed exported resource name. Include error code and number when database connection fails.
1 parent 197b928 commit b2387fc

File tree

4 files changed

+40
-31
lines changed

4 files changed

+40
-31
lines changed

src/config.ts

+14-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
export const resourceName = GetCurrentResourceName();
1+
import { typeCast } from './utils/typeCast';
2+
23
export const mysql_connection_string = GetConvar('mysql_connection_string', '');
34
export let mysql_ui = GetConvar('mysql_ui', 'false') === 'true';
45
export let mysql_slow_query_warning = GetConvarInt('mysql_slow_query_warning', 200);
@@ -87,7 +88,18 @@ export const connectionOptions = (() => {
8788
}
8889
}
8990

90-
return options;
91+
const flags: string[] = [];
92+
flags.push(options.database ? 'CONNECT_WITH_DB' : '-CONNECT_WITH_DB');
93+
94+
return {
95+
connectTimeout: 60000,
96+
trace: false,
97+
supportBigNumbers: true,
98+
...options,
99+
typeCast,
100+
namedPlaceholders: false, // we use our own named-placeholders patch, disable mysql2s
101+
flags: flags,
102+
};
91103
})();
92104

93105
RegisterCommand(

src/database/index.ts

+18-25
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
import { Connection, createPool, Pool } from 'mysql2/promise';
1+
import { createPool, Pool } from 'mysql2/promise';
22
import { connectionOptions, mysql_transaction_isolation_level, setDebug } from '../config';
3-
import { typeCast } from '../utils/typeCast';
43

54
let pool: Pool;
65
let isServerConnected = false;
@@ -18,25 +17,8 @@ export async function waitForConnection() {
1817
}
1918
}
2019

21-
setDebug();
22-
23-
setInterval(() => {
24-
setDebug();
25-
}, 1000);
26-
27-
setTimeout(async () => {
28-
const flags: string[] = [];
29-
flags.push(connectionOptions.database ? 'CONNECT_WITH_DB' : '-CONNECT_WITH_DB');
30-
31-
pool = createPool({
32-
connectTimeout: 60000,
33-
trace: false,
34-
supportBigNumbers: true,
35-
...connectionOptions,
36-
typeCast,
37-
namedPlaceholders: false, // we use our own named-placeholders patch, disable mysql2s
38-
flags: flags,
39-
});
20+
function setConnectionPool() {
21+
pool = createPool(connectionOptions);
4022

4123
pool.on('connection', (connection) => {
4224
connection.query(mysql_transaction_isolation_level);
@@ -45,16 +27,27 @@ setTimeout(async () => {
4527
pool.on('acquire', (connection) => {
4628
connection.query('SET profiling_history_size = 0');
4729
connection.query('SET profiling = 0');
48-
connection.query('SET profiling = 1');
4930
connection.query('SET profiling_history_size = 1000');
31+
connection.query('SET profiling = 1');
5032
});
33+
}
34+
35+
setInterval(() => {
36+
setDebug();
37+
}, 1000);
38+
39+
setTimeout(async () => {
40+
setDebug();
41+
setConnectionPool();
5142

5243
try {
53-
await pool.query('SELECT DATABASE()');
44+
(await pool.getConnection()).release();
5445
console.log(`^2Database server connection established!^0`);
5546
isServerConnected = true;
56-
} catch (err) {
57-
console.error(`^3Unable to establish a connection to the database!\n^3[${err}]^0`);
47+
} catch (err: any) {
48+
console.log(
49+
`^3Unable to establish a connection to the database (${err.code})!\n^1Error ${err.errno}: ${err.message}^0`
50+
);
5851
}
5952
});
6053

src/update/index.ts

+7-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import fetch from 'node-fetch';
2-
import { resourceName } from '../config';
32

43
if (GetConvar('mysql_versioncheck', 'true') === 'true') {
54
setTimeout(async () => {
@@ -10,13 +9,18 @@ if (GetConvar('mysql_versioncheck', 'true') === 'true') {
109
const release = (await response.json()) as any;
1110
if (release.prerelease) return;
1211

13-
const currentVersion = GetResourceMetadata(resourceName, 'version', 0).match(/(\d)\.(\d+\.\d+)/);
12+
const currentVersion = GetResourceMetadata(GetCurrentResourceName(), 'version', 0).match(/(\d)\.(\d+\.\d+)/);
1413
if (!currentVersion) return;
1514

1615
const latestVersion = release.tag_name.match(/(\d)\.(\d+\.\d+)/);
1716
if (!latestVersion) return;
1817

19-
if (currentVersion[0] === latestVersion[0] || parseInt(currentVersion[1]) > parseInt(latestVersion[1]) || parseFloat(currentVersion[2]) > parseFloat(latestVersion[2])) return;
18+
if (
19+
currentVersion[0] === latestVersion[0] ||
20+
parseInt(currentVersion[1]) > parseInt(latestVersion[1]) ||
21+
parseFloat(currentVersion[2]) > parseFloat(latestVersion[2])
22+
)
23+
return;
2024

2125
console.log(
2226
`^3An update is available for oxmysql (current version: ${currentVersion[0]})\r\n${release.html_url}^0`

src/utils/scheduleTick.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { resourceName } from '../config';
1+
const resourceName = GetCurrentResourceName();
22

33
export async function scheduleTick() {
44
ScheduleResourceTick(resourceName);

0 commit comments

Comments
 (0)