package com.kexue.skills.mapper;

import com.kexue.skills.entity.CmsContentLike;
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 CmsContentLikeMapper {
    /**
     * 新增点赞记录
     * 
     * @param cmsContentLike 点赞记录对象
     * @return 受影响的行数
     */
    int insert(CmsContentLike cmsContentLike);
    
    /**
     * 删除点赞记录
     * 
     * @param likeId 点赞记录ID
     * @return 受影响的行数
     */
    int deleteById(Long likeId);
    
    /**
     * 更新点赞记录
     * 
     * @param cmsContentLike 点赞记录对象
     * @return 受影响的行数
     */
    int update(CmsContentLike cmsContentLike);
    
    /**
     * 查询点赞记录
     * 
     * @param likeId 点赞记录ID
     * @return 点赞记录对象
     */
    CmsContentLike queryById(Long likeId);
    
    /**
     * 查询用户是否已点赞该内容
     * 
     * @param userId 用户ID
     * @param contentId 内容ID
     * @return 点赞记录对象，不存在则返回null
     */
    CmsContentLike queryByUserIdAndContentId(@Param("userId") Long userId, @Param("contentId") Long contentId);
    
    /**
     * 查询用户最近的点赞记录
     * 
     * @param userId 用户ID
     * @param limit 查询数量
     * @return 点赞记录列表
     */
    List<Long> queryRecentLikesByUserId(@Param("userId") Long userId, @Param("limit") int limit);
    
    /**
     * 查询内容的点赞记录数量
     * 
     * @param contentId 内容ID
     * @return 点赞记录数量
     */
    int countByContentId(Long contentId);
}