package org.xyzh.news.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.xyzh.common.core.page.PageParam;
import org.xyzh.common.dto.resource.TbDataCollectionLog;

import java.util.List;

/**
 * @description DataCollectionLogMapper.java文件描述 数据采集记录数据访问层
 * @filename DataCollectionLogMapper.java
 * @author yslg
 * @copyright xyzh
 * @since 2025-10-15
 */
@Mapper
public interface DataCollectionLogMapper extends BaseMapper<TbDataCollectionLog> {

    /**
     * @description 查询数据采集记录列表
     * @param filter 过滤条件
     * @return List<TbDataCollectionLog> 数据采集记录列表
     * @author yslg
     * @since 2025-10-15
     */
    List<TbDataCollectionLog> selectDataCollectionLogs(TbDataCollectionLog filter);

    /**
     * @description 根据记录ID查询记录信息
     * @param logId 记录ID
     * @return TbDataCollectionLog 记录信息
     * @author yslg
     * @since 2025-10-15
     */
    TbDataCollectionLog selectByLogId(@Param("logId") String logId);

    /**
     * @description 根据配置ID查询记录列表
     * @param configId 配置ID
     * @return List<TbDataCollectionLog> 记录列表
     * @author yslg
     * @since 2025-10-15
     */
    List<TbDataCollectionLog> selectByConfigId(@Param("configId") String configId);

    /**
     * @description 根据状态查询记录列表
     * @param status 状态
     * @return List<TbDataCollectionLog> 记录列表
     * @author yslg
     * @since 2025-10-15
     */
    List<TbDataCollectionLog> selectByStatus(@Param("status") Integer status);

    /**
     * @description 根据类型查询记录列表
     * @param type 类型
     * @return List<TbDataCollectionLog> 记录列表
     * @author yslg
     * @since 2025-10-15
     */
    List<TbDataCollectionLog> selectByType(@Param("type") Integer type);

    /**
     * @description 查询最新的记录列表
     * @param limit 限制数量
     * @return List<TbDataCollectionLog> 记录列表
     * @author yslg
     * @since 2025-10-15
     */
    List<TbDataCollectionLog> selectLatestLogs(@Param("limit") Integer limit);

    /**
     * @description 查询采集统计信息
     * @param configId 配置ID
     * @return TbDataCollectionLog 统计信息
     * @author yslg
     * @since 2025-10-15
     */
    TbDataCollectionLog selectCollectionStatistics(@Param("configId") String configId);

    /**
     * @description 插入数据采集记录
     * @param dataCollectionLog 数据采集记录
     * @return int 影响行数
     * @author yslg
     * @since 2025-10-15
     */
    int insertDataCollectionLog(TbDataCollectionLog dataCollectionLog);

    /**
     * @description 更新数据采集记录
     * @param dataCollectionLog 数据采集记录
     * @return int 影响行数
     * @author yslg
     * @since 2025-10-15
     */
    int updateDataCollectionLog(TbDataCollectionLog dataCollectionLog);

    /**
     * @description 删除数据采集记录
     * @param dataCollectionLog 数据采集记录
     * @return int 影响行数
     * @author yslg
     * @since 2025-10-15
     */
    int deleteDataCollectionLog(TbDataCollectionLog dataCollectionLog);

    /**
     * @description 批量插入数据采集记录
     * @param dataCollectionLogList 数据采集记录列表
     * @return int 影响行数
     * @author yslg
     * @since 2025-10-15
     */
    int batchInsertDataCollectionLogs(@Param("dataCollectionLogList") List<TbDataCollectionLog> dataCollectionLogList);

    /**
     * @description 批量删除数据采集记录
     * @param ids 记录ID列表
     * @return int 影响行数
     * @author yslg
     * @since 2025-10-15
     */
    int batchDeleteDataCollectionLogs(@Param("ids") List<String> ids);

    /**
     * @description 分页查询数据采集记录
     * @param filter 过滤条件
     * @param pageParam 分页参数
     * @return List<TbDataCollectionLog> 数据采集记录列表
     * @author yslg
     * @since 2025-10-15
     */
    List<TbDataCollectionLog> selectDataCollectionLogsPage(@Param("filter") TbDataCollectionLog filter, @Param("pageParam") PageParam pageParam);

    /**
     * @description 统计数据采集记录总数
     * @param filter 过滤条件
     * @return long 总数
     * @author yslg
     * @since 2025-10-15
     */
    long countDataCollectionLogs(@Param("filter") TbDataCollectionLog filter);
}
