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

import cn.meowrain.aioj.backend.blogservice.dao.entity.Collection;
import cn.meowrain.aioj.backend.blogservice.dto.req.CollectionFolderCreateRequestDTO;
import cn.meowrain.aioj.backend.blogservice.dto.req.CollectionRequestDTO;
import cn.meowrain.aioj.backend.blogservice.dto.resp.ArticleListResponseDTO;
import cn.meowrain.aioj.backend.blogservice.dto.resp.CollectionFolderResponseDTO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * 收藏服务接口
 *
 * @author AIOJ
 */
public interface CollectionService extends IService<Collection> {

    /**
     * 收藏文章
     *
     * @param request 收藏请求
     * @return 是否成功
     */
    Boolean collectArticle(CollectionRequestDTO request);

    /**
     * 取消收藏文章
     *
     * @param articleId 文章ID
     * @return 是否成功
     */
    Boolean uncollectArticle(Long articleId);

    /**
     * 查询收藏状态
     *
     * @param userId    用户ID
     * @param articleId 文章ID
     * @return 是否已收藏
     */
    Boolean isCollected(Long userId, Long articleId);

    /**
     * 创建收藏夹
     *
     * @param request 收藏夹创建请求
     * @return 收藏夹ID
     */
    Long createCollectionFolder(CollectionFolderCreateRequestDTO request);

    /**
     * 删除收藏夹
     *
     * @param folderId 收藏夹ID
     * @return 是否成功
     */
    Boolean deleteCollectionFolder(Long folderId);

    /**
     * 查询用户的所有收藏夹
     *
     * @return 收藏夹列表
     */
    List<CollectionFolderResponseDTO> getCollectionFolders();

    /**
     * 分页查询用户的收藏列表
     *
     * @param current 页码
     * @param size    每页数量
     * @param folderId 收藏夹ID（可选）
     * @return 文章列表
     */
    IPage<ArticleListResponseDTO> getCollectedArticles(Integer current, Integer size, Long folderId);
}
