package org.xyzh.ai.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.ai.TbAiAgentConfig;

import java.util.List;

/**
 * @description 智能体配置数据访问层
 * @filename AiAgentConfigMapper.java
 * @author yslg
 * @copyright xyzh
 * @since 2025-10-15
 */
@Mapper
public interface AiAgentConfigMapper extends BaseMapper<TbAiAgentConfig> {

    /**
     * 插入智能体配置
     */
    int insertAgentConfig(TbAiAgentConfig agentConfig);

    /**
     * 更新智能体配置（只更新非null字段）
     */
    int updateAgentConfig(TbAiAgentConfig agentConfig);

    /**
     * 逻辑删除智能体配置
     */
    int deleteAgentConfig(TbAiAgentConfig agentConfig);

    /**
     * 根据ID查询智能体配置
     */
    TbAiAgentConfig selectAgentConfigById(@Param("agentId") String agentId);

    /**
     * 查询所有智能体配置（支持过滤）
     */
    List<TbAiAgentConfig> selectAgentConfigs(@Param("filter") TbAiAgentConfig filter);

    /**
     * 分页查询智能体配置
     */
    List<TbAiAgentConfig> selectAgentConfigsPage(
            @Param("filter") TbAiAgentConfig filter,
            @Param("pageParam") PageParam pageParam
    );

    /**
     * 统计智能体配置总数
     */
    long countAgentConfigs(@Param("filter") TbAiAgentConfig filter);

    /**
     * 根据名称统计数量（用于检查重复）
     */
    int countAgentConfigByName(
            @Param("name") String name,
            @Param("excludeId") String excludeId
    );

    /**
     * @description 查询智能体配置列表（原有方法保留兼容性）
     * @param filter 过滤条件
     * @return List<TbAiAgentConfig> 智能体配置列表
     * @author yslg
     * @since 2025-10-15
     */
    List<TbAiAgentConfig> selectAiAgentConfigs(TbAiAgentConfig filter);
}
