import {isNumber} from "@/utils/validate";

/**
 * 格式化查询条件，用于列表查询条件
 */
export function formatListQuery(listQuery) {
    const newQuery = {};
    Object.keys(listQuery).forEach(key => {
        if (listQuery[key] !== undefined && listQuery[key] !== "") {
            if (listQuery[key] instanceof Array) {
                if (listQuery[key].length !== 0) {
                    newQuery[key] = listQuery[key].join(',')
                }
            } else if (!(key === 'page' && listQuery[key] === 1) && !(key === 'size' && listQuery[key] === 10)) {
                newQuery[key] = listQuery[key]
            }
        }
    });
    return newQuery;
}

/**
 * 把路由的查询条件映射到listQuery
 */
export function parseListQuery(query, listQuery) {
    if (query) {
        Object.keys(query).forEach(key => {
            if (listQuery[key] !== undefined) {
                if (listQuery[key].constructor == Array) {
                    listQuery[key] = query[key].split(',').map(v => parseInt(v));
                } else if (listQuery[key].constructor == Number) {
                    listQuery[key] = parseInt(query[key]);
                } else {
                    listQuery[key] = query[key];
                }
            } else {
                if (query[key] === "true" || query[key] === "false") {
                    listQuery[key] = query[key] === "true";
                } else if (isNumber(query[key])) {
                    listQuery[key] = parseInt(query[key]);
                } else {
                    listQuery[key] = query[key];
                }
            }
        });
    }
}
