package org.xyzh.ai.mapper;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.xyzh.api.ai.dto.TbAgent;
import org.xyzh.common.core.page.PageParam;

import java.util.List;

/**
 * @description 智能体数据访问层
 * @filename AgentMapper.java
 * @author yslg
 * @copyright xyzh
 * @since 2025-12-17
 */
@Mapper
public interface TbAgentMapper {

    /**
     * 插入智能体
     */
    int insertAgent(TbAgent agent);

    /**
     * 更新智能体（只更新非null字段）
     */
    int updateAgent(TbAgent agent);

    /**
     * 逻辑删除智能体
     */
    int deleteAgent(TbAgent agent);

    /**
     * 根据ID查询智能体
     */
    TbAgent selectAgentById(@Param("agentId") String agentId);

    /**
     * 根据ApiKey查询智能体
     */
    TbAgent selectAgentByApiKey(@Param("apiKey") String apiKey);

    /**
     * 查询智能体列表
     */
    List<TbAgent> selectAgentList(@Param("filter") TbAgent filter);

    /**
     * 分页查询智能体
     */
    List<TbAgent> selectAgentPage(
            @Param("filter") TbAgent filter,
            @Param("pageParam") PageParam pageParam
    );

    /**
     * 统计智能体数量
     */
    long countAgents(@Param("filter") TbAgent filter);

    /**
     * 根据名称检查是否存在
     */
    int countByName(
            @Param("name") String name,
            @Param("excludeId") String excludeId
    );
}
