UNPKG

ticatec-node-common-library

Version:

A set of common classes for node express apps.

98 lines 3.7 kB
"use strict"; 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