package cn.fateverse.query.service;

import cn.fateverse.common.core.entity.Option;
import cn.fateverse.common.core.result.Result;
import cn.fateverse.query.entity.TableInfo;
import cn.fateverse.query.entity.dto.ImportDto;
import cn.fateverse.query.entity.query.TableQuery;
import cn.fateverse.query.entity.vo.TableVo;
import cn.fateverse.common.core.result.page.TableDataInfo;

import java.util.List;

/**
 * 自定义查询表格维护 Service
 *
 * @author clay
 * @date 2023-07-16
 */
public interface TableService {


    /**
     * 查询自定义查询表格维护列表
     *
     * @param query 自定义查询表格维护
     * @return 自定义查询表格维护集合
     */
    TableDataInfo<TableVo> searchList(TableQuery query);

    /**
     * 根据数据源获取到表格option信息
     *
     * @param datasourceId 数据源id
     * @return option数据
     */
    List<Option> searchOption(Long datasourceId);

    /**
     * 根据表格id获取列的option信息
     *
     * @param tableId 表格id
     * @return option数据
     */
    List<Option> searchColumnOption(Long tableId);


    /**
     * 导入自定义查询表格维护
     *
     * @param dto 自定义查询表格维护
     * @return 结果
     */
    Result<Long> importTable(ImportDto dto);

    /**
     * 获取到表格的详细信息
     *
     * @param tableId 表格id
     * @return 表格信息
     */
    TableInfo searchById(Long tableId);

    /**
     * 修改自定义查询表格维护
     *
     * @param table 自定义查询表格维护
     */
    void edit(TableInfo table);

    /**
     * 同步数据库
     * @param tableId 同步数据库表
     */
    void syncTable(Long tableId);

    /**
     * 删除自定义查询表格维护
     *
     * @param tableId 需要删除的自定义查询表格维护Id
     * @return 结果
     */
    int removeById(Long tableId);
}