UNPKG

ts-api-core

Version:

Nodejs api framework core

62 lines 2.19 kB
"use strict"; /* 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