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

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

public interface IGroupCourseRecommendRepository {

    Mono<GroupCourseRecommend> findById(Long id);

    Flux<GroupCourseRecommend> findAll();

    Flux<GroupCourseRecommend> findAll(String sortBy, String sortOrder);

    Flux<GroupCourseRecommend> findAllActive();

    Flux<GroupCourseRecommend> findByCourseId(Long courseId);

    Mono<GroupCourseRecommend> findActiveByCourseId(Long courseId);

    Mono<GroupCourseRecommend> save(GroupCourseRecommend recommend);

    Mono<GroupCourseRecommend> update(GroupCourseRecommend recommend);

    Mono<Void> deleteById(Long id);

    Mono<Void> deleteByCourseId(Long courseId);

    Mono<GroupCourseRecommend> updateActiveStatus(Long id, Boolean isActive);
}