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

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

public interface IGroupCourseTypeRepository {

    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> findByTypeName(String typeName);

    Mono<GroupCourseType> save(GroupCourseType groupCourseType);

    Mono<GroupCourseType> update(GroupCourseType groupCourseType);

    Mono<Void> deleteById(Long id);
}