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

/**
 * @description    视频会议数据访问层
 * @filename    TbVideoMeetingMapper.java
 * @author    cascade
 * @copyright xyzh
 * @since 2025-12-22
 */
@Mapper
public interface TbVideoMeetingMapper {

    /**
     * 插入视频会议
     */
    int insertVideoMeeting(TbVideoMeetingDTO meeting);

    /**
     * 更新视频会议（只更新非null字段）
     */
    int updateVideoMeeting(TbVideoMeetingDTO meeting);

    /**
     * 逻辑删除视频会议
     */
    int deleteVideoMeeting(TbVideoMeetingDTO meeting);

    /**
     * 根据ID查询视频会议
     */
    TbVideoMeetingDTO selectVideoMeetingById(@Param("meetingId") String meetingId);

    /**
     * 查询视频会议列表
     */
    List<VideoMeetingVO> selectVideoMeetingList(@Param("filter") TbVideoMeetingDTO filter);

    /**
     * 分页查询视频会议
     */
    List<VideoMeetingVO> selectVideoMeetingPage(@Param("filter") TbVideoMeetingDTO filter, @Param("pageParam") PageParam pageParam);

    /**
     * 统计视频会议数量
     */
    long countVideoMeetings(@Param("filter") TbVideoMeetingDTO filter);

}
