package org.xyzh.ai.mapper;

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

import java.util.List;

/**
 * @description 对话消息数据访问层
 * @filename ChatMessageMapper.java
 * @author yslg
 * @copyright xyzh
 * @since 2025-12-17
 */
@Mapper
public interface TbChatMessageMapper {

    /**
     * 插入消息
     */
    int insertChatMessage(TbChatMessage message);

    /**
     * 更新消息
     */
    int updateChatMessage(TbChatMessage message);

    /**
     * 逻辑删除消息
     */
    int deleteChatMessage(TbChatMessage message);

    /**
     * 根据ID查询消息
     */
    TbChatMessage selectMessageById(@Param("messageId") String messageId);

    /**
     * 根据对话ID查询消息列表
     */
    List<TbChatMessage> selectMessagesByChatId(@Param("chatId") String chatId);

    /**
     * 分页查询消息
     */
    List<TbChatMessage> selectMessagePage(
            @Param("chatId") String chatId,
            @Param("pageParam") PageParam pageParam
    );

    /**
     * 统计消息数量
     */
    long countMessages(@Param("chatId") String chatId);

    /**
     * 批量删除消息（根据对话ID）
     */
    int deleteMessagesByChatId(@Param("chatId") String chatId);
}
