package com.yice.webadmin.app.service;

import com.yice.common.core.object.MyPageParam;
import com.yice.webadmin.app.data.DatasetData;

import java.util.List;

/**
 * 数据集版本数据操作服务接口。
 *
 * @author linking
 * @date 2023-04-13
 */
public interface DatasetDataService {

    /**
     * 保存新增对象。
     *
     * @param datasetData 新增对象。
     * @return 返回新增对象。
     */
    void save(DatasetData datasetData);

    /**
     * 查询列表集合
     * @param versionId 版本标识
     * @return 返回查看对象列表
     */
    List<DatasetData> list(Long versionId);

    /**
     * 将源集合添加到模板集合中
     * @param sourceVersionId 源版本标识
     * @param targetVersionId 目标版本标识
     */
    void copy(Long sourceVersionId, Long targetVersionId);

    /**
     * 开始清洗工作
     * @param datasetId 清洗数据集
     * @param cleanId 清洗标识
     * @param cleanConfigId 清洗配置标识
     */
    void doDatasetCleanHandler(Long datasetId, Long cleanId, Long cleanConfigId);

    /**
     * 删除整个集合中的文档数据。
     *
     * @param versionId 版本标识。
     * @return 返回受影响的行数。
     */
    void delete(Long versionId);

    /**
     * 根据id查询该条信息。
     *
     * @param id 文档标识。
     * @param versionId 版本标识。
     * @return 返回查看对象。
     */
    DatasetData view(String id, Long versionId);

    /**
     * 删除整个集合中的空文档数据集数据。
     *
     * @param versionId 版本标识。
     * @return 返回受影响的行数。
     */
    void deleteByData(Long versionId);

    /**
     * 查询列表集合总条数
     * @param versionId 版本标识
     * @return 返回总条数
     */
    Long count(Long versionId);


    /**
     * 查询列表集合总条数
     * @param filter 过滤条件
     * @return 返回总条数
     */
    Long count(DatasetData filter);

    /**
     * 查询列表集合
     * @param versionId 版本标识
     * @param pageParam 页码参数
     * @return 返回查看对象列表
     */
    List<DatasetData> list(Long versionId, MyPageParam pageParam);

    /**
     * 根据条件查询数据集数据。
     *
     * @param filter  过滤对象。
     * @param pageParam 分页对象。
     * @return 查询结果集。
     */
    List<DatasetData> list(DatasetData filter, MyPageParam pageParam);

    /**
     * 更新数据对象。
     *
     * @param datasetData 更新的对象。
     * @return 返回修改后的对象。
     */
    void update(DatasetData datasetData);

    /**
     * 批量处理数据集列表。
     *
     * @param dataList 批量处理数据集列表。
     * @param versionId 版本标识
     * @return 返回修改后的对象。
     */
    void updateBatch(List<DatasetData> dataList, Long versionId);

    /**
     * 删除指定数据。
     *
     * @param id 主键Id。
     * @param versionId 版本标识。
     * @return 返回受影响的行数。
     */
    Long remove(String id,Long versionId);
}
