ticatec-node-common-library
Version:
A set of common classes for node express apps.
98 lines • 3.7 kB
JavaScript
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
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"));
const logger = log4js_1.default.getLogger('ticatec.common.SearchCriteria');
const DEFAULT_ROWS_PAGE = 25;
const FIRST_PAGE = 1;
class SearchCriteria {
/**
* 查询符合条件的记录数量
* @param conn
* @param sql
* @param params
* @private
*/
queryCount(conn, sql, params) {
return __awaiter(this, void 0, void 0, function* () {
let result = yield conn.find(`select count(*) as cc from (${sql}) a`, params);
return result == null ? 0 : parseInt(result['cc']);
});
}
/**
* 在将行记录转换成对象后的回调函数
* @protected
*/
getPostConstructor() {
return null;
}
/**
* 判断是否为空
* @param s
* @protected
*/
isNotEmpty(s) {
return !StringUtils_1.default.isEmpty(s);
}
/**
* 封装like查询值
* @param s
* @protected
*/
wrapLikeMatch(s) {
return `%${s}%`;
}
getOrderClause() {
return '';
}
/**
* 执行查询语句,返回分页查询结果
* @param conn
* @param page
* @param rowCount
*/
paginationQuery(conn, page, rowCount) {
return __awaiter(this, void 0, void 0, function* () {
let sql = this.getSQL();
let params = this.getParams();
let count = yield this.queryCount(conn, sql, params);
if (count > 0) {
const rows = StringUtils_1.default.parseNumber(rowCount, DEFAULT_ROWS_PAGE);
const offset = ((StringUtils_1.default.parseNumber(page, FIRST_PAGE) || FIRST_PAGE) - 1) * rows;
let listSQL = `${sql} ${this.getOrderClause()} ${conn.getRowSetLimitClause(rows, offset)} `;
logger.debug(`符合条件总数:${count}, 需要记录从${offset}开始读取${rows}条记录`);
logger.debug('执行查询语句', listSQL, params);
let list = count > offset ? yield conn.listQuery(listSQL, params, this.getPostConstructor()) : [];
const hasMore = offset + rows > count;
return { count, hasMore, list };
}
else {
return { count, hasMore: false, list: [] };
}
});
}
/**
* 不分页,返回所有符合条件的记录
* @param conn
*/
query(conn) {
return __awaiter(this, void 0, void 0, function* () {
let params = this.getParams();
return yield conn.listQuery(`${this.getSQL()} ${this.getOrderClause()}`, params);
});
}
}
exports.default = SearchCriteria;
//# sourceMappingURL=SearchCriteria.js.map
;