package cn.novalon.gym.manage.groupcourse.service;

import cn.novalon.gym.manage.groupcourse.domain.GroupCourseType;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;

public interface IGroupCourseTypeService {

    Mono<GroupCourseType> findById(Long id);

    Flux<GroupCourseType> findAll();

    Flux<GroupCourseType> findAll(boolean includeDeleted);

    Flux<GroupCourseType> findByKeyword(String keyword);

    Flux<GroupCourseType> findByCategory(String category);

    Flux<GroupCourseType> findByCategoryAndKeyword(String category, String keyword);

    Mono<GroupCourseType> create(GroupCourseType groupCourseType);

    Mono<GroupCourseType> update(Long id, GroupCourseType groupCourseType);

    Mono<Void> delete(Long id);

    /**
     * 获取分类列表（去重）
     * @return 分类名称列表
     */
    Flux<String> findCategories();
}