// import { isString, isBoolean, isArray } from '/@/utils/is';
// 设置请求参数
export interface WhereParams {
  // 列名
  column: string;
  // 条件 eq, like, noeq
  termType: string;
  // 类型
  type: 'and' | 'or' | 'in';
  // 值
  value?: string | number;
  // 多值
  values?: Array<string>;
}

export interface PageParams {
  // 当前页面索引
  current: number;
  // 页面大小
  size: number;
}

export interface EndParams {
  includes: Array<string>;
  page?: Partial<PageParams>;
  wheres: Array<Partial<WhereParams>>;
}

interface CurrParams {
  // 页面索引
  current?: number;
  // 页面大小
  size?: number;
  // 条件
  wheres?: Array<Partial<WhereParams>>;
  // 返回包含字段
  includes?: Array<string>;
  // search 状态 current 为 1
  search?: boolean;
}

// eg
// const obj: CurrParams = {
//   current: 1,
//   size: 10,
//   wheres: [
//     {
//       column: 'name',
//       termType: 'btw',
//       type: 'and',
//       value: 'fanfan',
//     },
//     {
//       column: 'areaCode',
//       termType: 'btw',
//       type: 'and',
//       value: '453400',
//     },
//   ],
// };

export function setParams(params: CurrParams | undefined): EndParams | void {
  if (params === undefined) return;
  const endParams: EndParams = {
    wheres: [],
    includes: [],
  };
  if (params.search) {
    endParams.page = {
      current: 1,
      size: params.size || 10,
    };
  }
  if (params.current !== undefined && params.current >= 1) {
    endParams.page = {
      current: params.current || 1,
      size: params.size || 10,
    };
  }
  if (params.includes !== undefined && params.includes.length) {
    endParams.includes = params.includes || [];
  }
  if (params.wheres !== undefined && params.wheres.length) {
    params.wheres.forEach((ele) => {
      if (ele.column) {
        const obj: WhereParams = {
          column: ele.column,
          termType: ele.termType || 'like',
          type: ele.type || 'and',
        };
        if (ele.values !== undefined && ele.values.length) {
          obj.values = ele.values;
        } else {
          obj.value = ele.value;
        }
        endParams.wheres.push(obj);
      }
    });
  }
  return endParams;
}
