package com.boman.web.core.service.select;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

import java.util.List;

/**
 * @author shiqian
 * @date 2021年03月29日 10:22
 **/
public interface IBaseSelectService {

    /**
     * 功能描述: 根据条件查询
     *
     * @param tableName     tableName
     * @param condition     原始查询条件
     * @param packCondition 封装的查询条件
     * @param showData      前台需要查询的列
     * @param orderBy       orderBy
     * @param limit         分页
     * @param offset        分页
     * @return java.util.List<com.alibaba.fastjson.JSONObject>
     */
    List<JSONObject> selectByCondition(String tableName, JSONObject condition, JSONObject packCondition
            , JSONArray showData, String orderBy, Integer limit, Integer offset);

    /**
     * 功能描述: 根据条件查询
     *
     * @param tableName     tableName
     * @param condition     原始查询条件
     * @param packCondition 封装的查询条件
     * @return int
     */
    int countByCondition(String tableName, JSONObject condition, JSONObject packCondition);

    /**
     * 功能描述: 根据id查所有，不支持自定义查询列
     *
     * @param tableName 表名
     * @param pkName    主键名称
     * @param id        主键值
     * @return com.alibaba.fastjson.JSONObject
     */
    JSONObject selectById(String tableName, String pkName, Long id);

    /**
     * 功能描述: 根据id查所有，不支持自定义查询列
     *
     * @param tableName 表名
     * @param pkName    主键名称
     * @param idList    主键值
     * @param showData  需要展示的列
     * @return com.alibaba.fastjson.JSONObject
     */
    List<JSONObject> selectByIdList(String tableName, String pkName, List<Long> idList, JSONArray showData);
}
