package com.bio.bio_backend.domain.base.member.repository;

import com.bio.bio_backend.domain.base.member.dto.MemberSearchCondition;
import com.bio.bio_backend.domain.base.member.entity.Member;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import java.util.List;
import java.util.Optional;

public interface MemberRepositoryCustom {

    /**
     * 활성화된 사용자 중에서 사용자 ID로 검색하여 조회합니다.
     *
     * @param userId 사용자 ID
     * @return Optional<Member> 회원 정보 (없으면 empty)
     */
    Optional<Member> findActiveMemberByUserId(String userId);
    
    /**
     * QueryDSL을 사용한 회원 목록 조회 (검색 조건 + 페이징)
     *
     * @param condition 검색 조건
     * @param pageable 페이징 정보
     * @return Page<Member> 검색된 회원 목록
     */
    Page<Member> findMembers(MemberSearchCondition condition, Pageable pageable);
    
    /**
     * QueryDSL을 사용한 회원 목록 조회 (검색 조건)
     *
     * @param condition 검색 조건
     * @return List<Member> 검색된 회원 목록
     */
    List<Member> findMembers(MemberSearchCondition condition);
}
