feat: use mysql connection pool
This commit is contained in:
parent
5602ece097
commit
4b8dc1fa1c
2 changed files with 9 additions and 8 deletions
|
|
@ -4,7 +4,7 @@ import { Express } from "express";
|
|||
import * as express from "express";
|
||||
import * as winston from "winston";
|
||||
import * as morgan from "morgan";
|
||||
import { Connection, createConnection } from "mysql2/promise";
|
||||
import { Pool, createPool } from "mysql2/promise";
|
||||
import { engine as handlebarsEngine } from "express-handlebars";
|
||||
|
||||
import { Config } from "./Config";
|
||||
|
|
@ -17,10 +17,10 @@ export class Armory {
|
|||
public characterCustomization: CharacterCustomization;
|
||||
public dbc: DbcManager;
|
||||
public config: Config;
|
||||
public worldDb: Connection;
|
||||
public worldDb: Pool;
|
||||
public logger: winston.Logger;
|
||||
|
||||
private charsDbs: { [key: string]: Connection };
|
||||
private charsDbs: { [key: string]: Pool };
|
||||
private errorNames: { [key: number]: string };
|
||||
private errorDescriptions: { [key: number]: string };
|
||||
|
||||
|
|
@ -68,9 +68,9 @@ export class Armory {
|
|||
await this.characterCustomization.loadData();
|
||||
|
||||
this.logger.info("Connecting to databases...");
|
||||
this.worldDb = await createConnection(this.config.worldDatabase);
|
||||
this.worldDb = createPool(this.config.worldDatabase);
|
||||
for (const realm of this.config.realms) {
|
||||
this.charsDbs[realm.name.toLowerCase()] = await createConnection(realm.charactersDatabase);
|
||||
this.charsDbs[realm.name.toLowerCase()] = createPool(realm.charactersDatabase);
|
||||
}
|
||||
|
||||
this.logger.info("Starting server...");
|
||||
|
|
@ -168,7 +168,7 @@ export class Armory {
|
|||
});
|
||||
}
|
||||
|
||||
public getCharactersDb(realm: string): Connection {
|
||||
public getCharactersDb(realm: string): Pool {
|
||||
return this.charsDbs[realm.toLowerCase()];
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -54,20 +54,21 @@ export class IndexController {
|
|||
}
|
||||
|
||||
const db = this.armory.getCharactersDb(realm.name);
|
||||
const conn = await db.getConnection();
|
||||
|
||||
if (!(realm.name in this.charsetCache)) {
|
||||
let [rows, fields] = await db.query(`
|
||||
SELECT CCSA.character_set_name FROM information_schema.\`TABLES\` T,
|
||||
information_schema.\`COLLATION_CHARACTER_SET_APPLICABILITY\` CCSA
|
||||
WHERE CCSA.collation_name = T.table_collation
|
||||
AND T.table_schema = "${db.config.database}"
|
||||
AND T.table_schema = "${conn.config.database}"
|
||||
AND T.table_name = "characters"
|
||||
`);
|
||||
this.charsetCache[realm.name] = rows[0].character_set_name;
|
||||
}
|
||||
const charSet = this.charsetCache[realm.name];
|
||||
|
||||
let ssp = new DataTablesSsp(req.query, db, "characters", "guid", [
|
||||
let ssp = new DataTablesSsp(req.query, conn, "characters", "guid", [
|
||||
{ name: "name", collation: `${charSet}_general_ci` },
|
||||
{ table: "guild", name: "name" },
|
||||
{ name: "level" },
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue