package cn.fateverse.query.mapper;

import cn.fateverse.query.entity.DataSourceManageCount;
import cn.fateverse.query.entity.Table;
import cn.fateverse.query.entity.query.TableQuery;

import java.util.List;
import java.util.Set;

/**
 * @author Clay
 * @date 2023-07-16
 */
public interface TableMapper {


    /**
     * 根据表格id查询信息
     *
     * @param tableId 表格id
     * @return 表格信息
     */
    Table selectById(Long tableId);

    /**
     * 根据数据源id查询表格名称
     *
     * @param dataSourceId
     * @return
     */
    Set<String> selectTableNameByDataSourceId(Long dataSourceId);

    /**
     * 根据数据源id获取到表格信息
     *
     * @param dataSourceId 数据源id
     * @return 表格信息
     */
    List<Table> selectListByDataSourceId(Long dataSourceId);

    /**
     * 查询表格list
     *
     * @param query
     * @return 业务集合
     */
    List<Table> selectList(TableQuery query);

    /**
     * 根据数据源id查询当前数据源id下存在多少张表信息
     *
     * @param idList 数据源id列表
     * @return 查询结果
     */
    List<DataSourceManageCount> selectCountByDataSourceIds(List<Long> idList);

    /**
     * 新增
     *
     * @param table
     * @return
     */
    int insert(Table table);

    /**
     * 修改
     *
     * @param table
     * @return
     */
    int update(Table table);

    /**
     * 删除
     *
     * @param tableId
     * @return
     */
    int deleteById(Long tableId);

    /**
     * 批量删除
     *
     * @param ids
     * @return
     */
    int deleteByIds(Long[] ids);

}
