package cn.meowrain.aioj.backend.blogservice.service;

import cn.meowrain.aioj.backend.blogservice.dao.entity.Like;
import cn.meowrain.aioj.backend.blogservice.dto.req.LikeRequestDTO;
import com.baomidou.mybatisplus.extension.service.IService;

/**
 * 点赞服务接口
 *
 * @author AIOJ
 */
public interface LikeService extends IService<Like> {

    /**
     * 点赞
     *
     * @param request 点赞请求
     * @return 是否成功
     */
    Boolean like(LikeRequestDTO request);

    /**
     * 取消点赞
     *
     * @param request 点赞请求
     * @return 是否成功
     */
    Boolean unlike(LikeRequestDTO request);

    /**
     * 查询点赞状态
     *
     * @param userId    用户ID
     * @param targetId  目标ID
     * @param targetType 目标类型：1=文章，2=评论
     * @return 是否已点赞
     */
    Boolean isLiked(Long userId, Long targetId, Integer targetType);

    /**
     * 切换点赞状态
     *
     * @param request 点赞请求
     * @return 是否成功
     */
    Boolean toggleLike(LikeRequestDTO request);
}
