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.TbChatRoomDTO;
import org.xyzh.api.workcase.vo.ChatRoomVO;
import org.xyzh.common.core.page.PageParam;

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

    /**
     * 插入聊天室
     */
    int insertChatRoom(TbChatRoomDTO chatRoom);

    /**
     * 更新聊天室（只更新非null字段）
     */
    int updateChatRoom(TbChatRoomDTO chatRoom);

    /**
     * 逻辑删除聊天室
     */
    int deleteChatRoom(TbChatRoomDTO chatRoom);

    /**
     * 根据ID查询聊天室
     */
    TbChatRoomDTO selectChatRoomById(@Param("roomId") String roomId);

    /**
     * 查询聊天室列表
     */
    List<ChatRoomVO> selectChatRoomList(@Param("filter") TbChatRoomDTO filter);

    /**
     * 分页查询聊天室（含未读数）
     */
    List<ChatRoomVO> selectChatRoomPage(@Param("filter") TbChatRoomDTO filter, @Param("pageParam") PageParam pageParam, @Param("userId") String userId);

    /**
     * 统计聊天室数量
     */
    long countChatRooms(@Param("filter") TbChatRoomDTO filter);

}
