package cn.novalon.gym.manage.member.es.repository;

import cn.novalon.gym.manage.member.es.entity.MemberES;
import org.springframework.data.domain.Pageable;
import org.springframework.data.elasticsearch.annotations.Query;
import org.springframework.data.elasticsearch.repository.ReactiveElasticsearchRepository;
import org.springframework.stereotype.Repository;
import reactor.core.publisher.Flux;

/**
 * ES 会员数据访问层
 */
@Repository
public interface MemberESRepository extends ReactiveElasticsearchRepository<MemberES, String> {

    /**
     * 前台通用搜索：会员号（精确匹配） 或 昵称（模糊匹配） 或 手机号（精确匹配）并且 性别筛选（精确匹配）
     */
    Flux<MemberES> findByMemberNoOrPhoneOrNicknameContaining(
            String memberNo, String phone, String nickname, Pageable pageable);
}