@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
JavaScript
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
;