package com.kexue.skills.mapper;

import com.kexue.skills.entity.CmsContentView;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * CMS内容查看记录Mapper接口
 * 
 * @author 王志维
 * @since 2026-01-26
 */
@Mapper
public interface CmsContentViewMapper {
    /**
     * 新增查看记录
     * 
     * @param cmsContentView 查看记录对象
     * @return 受影响的行数
     */
    int insert(CmsContentView cmsContentView);
    
    /**
     * 删除查看记录
     * 
     * @param viewId 查看记录ID
     * @return 受影响的行数
     */
    int deleteById(Long viewId);
    
    /**
     * 更新查看记录
     * 
     * @param cmsContentView 查看记录对象
     * @return 受影响的行数
     */
    int update(CmsContentView cmsContentView);
    
    /**
     * 查询查看记录
     * 
     * @param viewId 查看记录ID
     * @return 查看记录对象
     */
    CmsContentView queryById(Long viewId);
    
    /**
     * 查询用户最近的查看记录
     * 
     * @param userId 用户ID
     * @param limit 查询数量
     * @return 查看记录列表
     */
    List<Long> queryRecentViewsByUserId(@Param("userId") Long userId, @Param("limit") int limit);
    
    /**
     * 查询内容的查看记录数量
     * 
     * @param contentId 内容ID
     * @return 查看记录数量
     */
    int countByContentId(Long contentId);
    
    /**
     * 查询用户是否已查看该内容
     * 
     * @param userId 用户ID
     * @param contentId 内容ID
     * @return 查看记录对象，不存在则返回null
     */
    CmsContentView queryByUserIdAndContentId(@Param("userId") Long userId, @Param("contentId") Long contentId);
}