@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.
102 lines • 3.38 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const StringUtils_1 = __importDefault(require("./StringUtils"));
const log4js_1 = __importDefault(require("log4js"));
class CommonDAO {
constructor() {
this.logger = log4js_1.default.getLogger(this.constructor.name);
this.logger.debug(`创建DAO实例:${this.constructor.name}`);
}
/**
* 生成32位的uuid
* @protected
* @returns 生成的32位UUID字符串
*/
genID() {
return StringUtils_1.default.genID();
}
/**
* 获取count数,默认属性是cc
* @param data - 包含计数信息的数据对象
* @param key - 计数字段的键名,默认为'cc'
* @protected
* @returns 解析后的计数值
*/
getCount(data, key = 'cc') {
let s = data == null ? null : data[key];
return s == null ? 0 : parseInt(s);
}
/**
* 执行count语句,返回count值
* @param conn - 数据库连接对象
* @param sql - 要执行的count SQL语句
* @param params - SQL参数数组
* @param key - 计数字段的键名,默认为'cc'
* @protected
* @returns Promise返回计数值
*/
async executeCountSQL(conn, sql, params, key = 'cc') {
return this.getCount(await conn.find(sql, params), key);
}
/**
* 转换布尔为整数
* @param value - 要转换的布尔值
* @protected
* @returns 布尔值对应的整数 (true=1, false=0)
*/
getBooleanValue(value) {
return value === true ? 1 : 0;
}
/**
* 转换布尔为字符串
* @param value - 要转换的布尔值
* @protected
* @returns 布尔值对应的字符串 (true='T', false='F')
*/
getBoolean(value) {
return value === true ? 'T' : 'F';
}
/**
* 将T/F类型的字符串字段转换为boolean类型
* @param data - 要转换的数据对象
* @param fields - 需要转换的字段名数组
* @protected
*/
convertBooleanFields(data, fields) {
fields.forEach(field => {
data[field] = data[field] === 'T' || data[field] === 1;
});
}
/**
* 快速查询,返回分页记录
* @param conn - 数据库连接对象
* @param sql - 查询SQL语句
* @param params - SQL参数数组,默认为空数组
* @param pageNo - 页码,默认为1
* @param rowCount - 每页行数,默认为25
* @protected
* @returns Promise返回包含列表数据和是否有更多数据的对象
*/
async quickSearch(conn, sql, params = [], pageNo = 1, rowCount = 25) {
let count = await this.executeCountSQL(conn, `select count(*) as cc from (${sql}) a`, params);
let offset = (pageNo - 1) * rowCount;
if (count > offset) {
let list = await conn.listQuery(`${sql} offset ${offset} limit ${rowCount}`, params);
return {
list,
hasMore: list.length + offset < count
};
}
else {
return {
list: [],
hasMore: false
};
}
}
}
exports.default = CommonDAO;
//# sourceMappingURL=CommonDAO.js.map
;