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

import cn.meowrain.aioj.backend.blogservice.dao.entity.Category;
import cn.meowrain.aioj.backend.blogservice.dto.req.CategoryCreateRequestDTO;
import cn.meowrain.aioj.backend.blogservice.dto.req.CategoryUpdateRequestDTO;
import cn.meowrain.aioj.backend.blogservice.dto.resp.CategoryResponseDTO;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * 文章分类服务接口
 *
 * @author AIOJ
 */
public interface CategoryService extends IService<Category> {

    /**
     * 创建分类
     *
     * @param request 分类创建请求
     * @return 分类ID
     */
    Long createCategory(CategoryCreateRequestDTO request);

    /**
     * 更新分类
     *
     * @param request 分类更新请求
     * @return 是否成功
     */
    Boolean updateCategory(CategoryUpdateRequestDTO request);

    /**
     * 删除分类
     *
     * @param categoryId 分类ID
     * @return 是否成功
     */
    Boolean deleteCategory(Long categoryId);

    /**
     * 根据ID查询分类详情
     *
     * @param categoryId 分类ID
     * @return 分类详情
     */
    CategoryResponseDTO getCategoryById(Long categoryId);

    /**
     * 根据slug查询分类详情
     *
     * @param slug 分类别名
     * @return 分类详情
     */
    CategoryResponseDTO getCategoryBySlug(String slug);

    /**
     * 查询所有分类列表
     *
     * @return 分类列表
     */
    List<CategoryResponseDTO> getAllCategories();

    /**
     * 查询启用的分类列表
     *
     * @return 分类列表
     */
    List<CategoryResponseDTO> getEnabledCategories();
}
