package cn.fateverse.query.service;

import cn.fateverse.query.entity.dto.DataSourceManageDto;
import cn.fateverse.query.entity.vo.DataSourceManageVo;
import cn.fateverse.query.entity.query.DataSourceManageQuery;
import cn.fateverse.common.core.entity.Option;
import cn.fateverse.common.core.result.page.TableDataInfo;

import java.util.List;

/**
 * 数据源管理 Service
 *
 * @author clay
 * @date 2023-07-16
 */
public interface DataSourceManageService {

    /**
     * 查询数据源管理
     *
     * @param id 数据源管理Id
     * @return 数据源管理
     */
    DataSourceManageVo searchById(Long id);

    /**
     * 查询数据源管理列表
     *
     * @param query 数据源管理
     * @return 数据源管理集合
     */
    TableDataInfo<DataSourceManageVo> searchList(DataSourceManageQuery query);

    /**
     * 查询数据源管理option
     *
     * @return 选项集合
     */
    List<Option> searchOptionList();

    /**
     * 导出数据源管理列表
     *
     * @param query query 数据源管理
     * @return 数据源管理集合
     */
    List<DataSourceManageVo> exportList(DataSourceManageQuery query);

    /**
     * 新增数据源管理
     *
     * @param sourceManageDto 数据源管理
     * @return 结果
     */
    int save(DataSourceManageDto sourceManageDto);

    /**
     * 修改数据源管理
     *
     * @param sourceManageDto 数据源管理
     * @return 结果
     */
    int edit(DataSourceManageDto sourceManageDto);

    /**
     * 删除数据源管理
     *
     * @param id 需要删除的数据源管理Id
     * @return 结果
     */
    int removeById(Long id);

    /**
     * 批量删除数据源管理
     *
     * @param idList 需要删除的数据源管理Id 集合
     * @return 结果
     */
    int removeBatch(List<Long> idList);

}