ts-api-core
Version:
Nodejs api framework core
62 lines • 2.19 kB
JavaScript
;
/* eslint-disable @typescript-eslint/no-extraneous-class */
/* eslint-disable @typescript-eslint/no-require-imports */
/* eslint-disable @typescript-eslint/no-var-requires */
Object.defineProperty(exports, "__esModule", { value: true });
exports.DBConnectionManager = void 0;
const app_1 = require("../base/app");
const mysql = require('mysql');
/**
* @description 数据库连接池管理 支持多数据库的管理
*/
class DBConnectionManager {
static getKey(config) {
return `${config.host}_${config.port}_${config.database}`;
}
static getPool(config) {
const key = this.getKey(config);
let exists = this.poolMap.get(key);
if (!exists) {
const cfg = {
connectionLimit: 100,
connectTimeout: config.connectTimeout,
acquireTimeout: 60 * 60 * 1000,
host: config.host,
port: config.port,
user: config.user,
password: config.password,
database: config.database,
supportBigNumbers: true,
bigNumberStrings: true,
multipleStatements: true,
debug: app_1.App.deubgDBConnection,
dateStrings: false,
charset: config.charset
};
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
exists = mysql.createPool(cfg);
this.poolMap.set(key, exists);
}
return exists;
}
/**
* 获取一个数据库连接对象
* mysql.PoolConnection
*/
static getConnection(config) {
const pool = this.getPool(config);
return new Promise((resolve, reject) => {
pool.getConnection((err, connection) => {
if (err) {
reject(err);
}
else {
resolve(connection);
}
});
});
}
}
exports.DBConnectionManager = DBConnectionManager;
DBConnectionManager.poolMap = new Map();
//# sourceMappingURL=db.connection.manager.js.map