package com.dora.service;

import com.dora.dto.CourseLikeFavoriteDto;

/**
 * 课程点赞和收藏服务接口
 */
public interface CourseLikeFavoriteService {

    /**
     * 切换课程点赞状态
     */
    CourseLikeFavoriteDto.LikeResponse toggleLike(Long userId, Long courseId);

    /**
     * 切换课程收藏状态
     */
    CourseLikeFavoriteDto.FavoriteResponse toggleFavorite(Long userId, Long courseId);

    /**
     * 检查用户是否已点赞课程
     */
    Boolean isLiked(Long userId, Long courseId);

    /**
     * 检查用户是否已收藏课程
     */
    Boolean isFavorited(Long userId, Long courseId);

    /**
     * 获取课程的点赞数量
     */
    Integer getLikeCount(Long courseId);

    /**
     * 获取课程的收藏数量
     */
    Integer getFavoriteCount(Long courseId);

    /**
     * 获取课程的点赞和收藏状态
     */
    CourseLikeFavoriteDto.CourseStatusResponse getCourseStatus(Long userId, Long courseId);

    /**
     * 获取用户点赞的课程列表
     */
    CourseLikeFavoriteDto.CourseListResponse getUserLikedCourses(Long userId, Integer page, Integer size);

    /**
     * 获取用户收藏的课程列表
     */
    CourseLikeFavoriteDto.CourseListResponse getUserFavoritedCourses(Long userId, Integer page, Integer size);

    /**
     * 获取用户的课程统计信息
     */
    CourseLikeFavoriteDto.CourseStatsResponse getUserStats(Long userId);
}