package org.xyzh.workcase.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.xyzh.api.workcase.dto.TbChatRoomMessageDTO;
import org.xyzh.api.workcase.vo.ChatRoomMessageVO;
import org.xyzh.common.core.page.PageParam;

/**
 * @description    聊天消息数据访问层
 * @filename    TbChatMessageMapper.java
 * @author    cascade
 * @copyright xyzh
 * @since 2025-12-22
 */
@Mapper
public interface TbChatMessageMapper {

    /**
     * 插入聊天消息
     */
    int insertChatMessage(TbChatRoomMessageDTO message);

    /**
     * 更新聊天消息（只更新非null字段）
     */
    int updateChatMessage(TbChatRoomMessageDTO message);

    /**
     * 删除聊天消息
     */
    int deleteChatMessage(TbChatRoomMessageDTO message);

    /**
     * 根据ID查询聊天消息
     */
    TbChatRoomMessageDTO selectChatMessageById(@Param("messageId") String messageId);

    /**
     * 查询聊天消息列表
     */
    List<ChatRoomMessageVO> selectChatMessageList(@Param("filter") TbChatRoomMessageDTO filter);

    /**
     * 分页查询聊天消息
     */
    List<ChatRoomMessageVO> selectChatMessagePage(@Param("filter") TbChatRoomMessageDTO filter, @Param("pageParam") PageParam pageParam);

    /**
     * 统计聊天消息数量
     */
    long countChatMessages(@Param("filter") TbChatRoomMessageDTO filter);

    /**
     * 根据消息ID查询完整VO
     */
    ChatRoomMessageVO selectChatMessageVOById(@Param("messageId") String messageId);

}
