package org.xyzh.crontab.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.crontab.TbCrontabTaskMeta;

import java.util.List;

/**
 * @description 定时任务元数据访问层
 * @filename TaskMetaMapper.java
 * @author yslg
 * @copyright xyzh
 * @since 2025-11-18
 */
@Mapper
public interface TaskMetaMapper extends BaseMapper<TbCrontabTaskMeta> {

    /**
     * @description 插入任务元数据
     */
    int insertTaskMeta(@Param("taskMeta") TbCrontabTaskMeta taskMeta);

    /**
     * @description 更新任务元数据
     */
    int updateTaskMeta(@Param("taskMeta") TbCrontabTaskMeta taskMeta);

    /**
     * @description 删除任务元数据（逻辑删除）
     */
    int deleteTaskMeta(@Param("metaId") String metaId);

    /**
     * @description 根据元数据ID查询
     */
    TbCrontabTaskMeta selectTaskMetaById(@Param("metaId") String metaId);

    /**
     * @description 根据任务ID查询
     */
    TbCrontabTaskMeta selectTaskMetaByTaskId(@Param("taskId") String taskId);

    /**
     * @description 查询所有任务元数据
     */
    List<TbCrontabTaskMeta> selectAllTaskMeta();

    /**
     * @description 根据分类查询任务元数据
     */
    List<TbCrontabTaskMeta> selectTaskMetaByCategory(@Param("category") String category);

    /**
     * @description 分页查询任务元数据
     */
    List<TbCrontabTaskMeta> selectTaskMetaPage(@Param("filter") TbCrontabTaskMeta filter, @Param("pageParam") PageParam pageParam);

    /**
     * @description 查询任务元数据总数
     */
    int countSelectTaskMeta(@Param("filter") TbCrontabTaskMeta filter);
}