UNPKG

@ticatec/node-common-library

Version:

A comprehensive Node.js database access framework providing robust abstractions for database connection management, SQL execution, transaction handling, pagination, and dynamic query building.

69 lines 2.36 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const DBManager_1 = __importDefault(require("./db/DBManager")); const BeanFactory_1 = __importDefault(require("./BeanFactory")); const log4js_1 = __importDefault(require("log4js")); class CommonService { constructor() { /** * 在事务中运行数据库操作,自动处理事务的开始、提交和回滚 * @param dbProcessor - 数据库处理函数,接收数据库连接作为参数 * @returns Promise返回处理结果 */ this.executeInTx = async (dbProcessor) => { let conn = await this.getDBConnection(); try { await conn.beginTransaction(); let result = await dbProcessor(conn); await conn.commit(); return result; } catch (ex) { await conn.rollback(); throw ex; } finally { await conn.close(); } }; /** * 在非事务中运行数据库操作 * @param dbProcessor - 数据库处理函数,接收数据库连接作为参数 * @returns Promise返回处理结果 */ this.executeNonTx = async (dbProcessor) => { let conn = await this.getDBConnection(); try { return await dbProcessor(conn); } finally { await conn.close(); } }; this.logger = log4js_1.default.getLogger(this.constructor.name); this.logger.debug(`创建Service实例:${this.constructor.name}`); } /** * 获取数据库连接 * @protected * @returns Promise返回数据库连接对象 */ async getDBConnection() { const dbMgr = DBManager_1.default.getInstance(); return await dbMgr.connect(); } /** * 获取对应的DAO实例 * @param name - DAO的名称 * @protected * @returns DAO实例对象 */ getDAOInstance(name) { return BeanFactory_1.default.createBean(name); } } exports.default = CommonService; //# sourceMappingURL=CommonService.js.map