egg-orm-ts
Version:
Simple orm with Typeorm, for egg plugin.
150 lines • 8.64 kB
JavaScript
;
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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