UNPKG

egg-orm-ts

Version:

Simple orm with Typeorm, for egg plugin.

150 lines 8.64 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.convertListToTree = exports.getMapByKey = exports.getValuesByKey = exports.isEmptyArray = exports.isEmptyObject = exports.batch = exports.modifyValues = void 0; const string_1 = require("./string"); /** * modifyValues * @param _obj 参数 * @param _fn 参数 */ function modifyValues(_obj, _fn) { return batch(_obj, (_acc, _cur) => { if (_cur[1]) { _acc[_cur[0]] = _fn(_cur[1]); } }); } exports.modifyValues = modifyValues; /** * batch * @param _obj 参数 * @param _fn 参数 */ function batch(_obj, _fn) { return Object.entries(_obj).reduce((_acc, _cur) => { _fn(_acc, _cur); return _acc; }, {}); } exports.batch = batch; /** * 判断空对象 * - null, undefined 或者 {} * - 没有一个合法属性(allFlag: false/undefined) 或 有一个非法属性(allFlag: true) * @param obj 参数 * @param allFlag 判断属性标志 * @returns boolean */ function isEmptyObject(obj, allFlag) { if (!obj || Object.keys(obj).length === 0) { return true; } if (!allFlag) { // 没有一个合法属性 return Object.keys(obj).findIndex(r => string_1.isValid(obj[r])) === -1; } // 有一个非法属性 return Object.keys(obj).findIndex(r => !string_1.isValid(obj[r])) !== -1; } exports.isEmptyObject = isEmptyObject; /** * 判断空数组 * - null, undefined 或者 空数组, * - 数据元素全部为非法; * @param arr 数组对象 * @returns boolean */ function isEmptyArray(arr) { if (!arr || arr.length === 0 || arr.every((el) => !string_1.isValid(el))) { return true; } return false; } exports.isEmptyArray = isEmptyArray; /** * 对象数组 转 指定属性的值的数组 * @param arrayList 对象数组 [{}] * @param key 对象属性 * @returns array */ function getValuesByKey(arrayList, key) { if (!arrayList) { return []; } const values = []; for (let i = 0; i < arrayList.length; i++) { if (!!arrayList[i]) { values.push(arrayList[i][key]); } } return values; } exports.getValuesByKey = getValuesByKey; /** * 对象数组 转 指定属性的值的 map * @param arrayList 对象数组 [{}] * @param key 对象属性 * @returns object */ function getMapByKey(arrayList, key) { if (!arrayList) { return {}; } const map = {}; for (let i = 0; i < arrayList.length; i++) { if (!!arrayList[i]) { map[arrayList[i][key]] = arrayList[i]; } } return map; } exports.getMapByKey = getMapByKey; /** * 转换list[{parent_[attr], [attr]}] 为 树结构数据 * @param dataList 边表节点数组 * @param rootAttrValue 根节点(如果未指定则返回分类列表) * @param attr 属性值,默认 id * @returns any */ function convertListToTree(dataList, rootAttrValue, attr) { let parent = 'parentId'; let child = 'id'; if (!!attr) { parent = 'parent' + string_1.upperCamelize(attr); child = attr; } // 转换数据 let rootData; // 按 parent_[attr] 分组 const parentMap = {}; dataList && dataList.forEach(r => { // 获取父节点 if (r[child] === rootAttrValue) { rootData = r; } if (!parentMap[r[parent]]) { parentMap[r[parent]] = []; } parentMap[r[parent]].push(r); }); // 处理关联关系(由于是引用,则只需要遍历一遍关联即可) for (const p in parentMap) { parentMap[p] && parentMap[p].forEach((r) => { r.children = parentMap[r[child]]; }); } // 以父节点为基础汇总数据 const rootList = parentMap[rootAttrValue]; if (!rootList) { return dataList; } // 没有父节点,则响应首层列表(parentAttr = rootAttr) if (!rootData) { return rootList; } // 匹配父节点,则响应父节点(含下层节点,children) rootData.children = rootList; return rootData; } exports.convertListToTree = convertListToTree; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsib2JqZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFDQUFrRDtBQUVsRDs7OztHQUlHO0FBQ0gsU0FBZ0IsWUFBWSxDQUFDLElBQVMsRUFBRSxHQUF1QjtJQUM3RCxPQUFPLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFTLEVBQUUsSUFBVyxFQUFFLEVBQUU7UUFDNUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDWCxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzlCO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBTkQsb0NBTUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsS0FBSyxDQUFDLElBQVMsRUFBRSxHQUFRO0lBQ3ZDLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUU7UUFDaEQsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNoQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNULENBQUM7QUFMRCxzQkFLQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxTQUFnQixhQUFhLENBQUMsR0FBUSxFQUFFLE9BQWlCO0lBQ3ZELElBQUksQ0FBQyxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1FBQ3pDLE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFDRCxJQUFJLENBQUMsT0FBTyxFQUFFO1FBQ1osV0FBVztRQUNYLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVB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