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

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

import java.util.List;

public interface ICourseLabelService {

    Mono<CourseLabel> findById(Long id);

    Flux<CourseLabel> findAll();

    Flux<CourseLabel> findByKeyword(String keyword);

    Mono<CourseLabel> create(CourseLabel courseLabel);

    Mono<CourseLabel> update(Long id, CourseLabel courseLabel);

    Mono<Void> delete(Long id);

    Flux<CourseLabel> findByTypeId(Long typeId);

    Mono<Void> addLabelsToType(Long typeId, List<Long> labelIds);

    Mono<Void> removeLabelFromType(Long typeId, Long labelId);

    Mono<Void> clearLabelsFromType(Long typeId);
}