package com.kamco.cd.kamcoback.postgres.repository;

import com.kamco.cd.kamcoback.postgres.entity.ZooEntity;
import com.kamco.cd.kamcoback.zoo.dto.ZooDto;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import org.springframework.data.domain.Page;

public interface ZooRepositoryCustom {

  Page<ZooEntity> listZoo(ZooDto.SearchReq searchReq);

  Optional<ZooEntity> getZooByUuid(String uuid);

  Optional<ZooEntity> getZooByUid(Long uid);

  Long countActiveAnimals(Long zooId);

  /**
   * 여러 Zoo의 활성 동물 수를 한 번에 조회 (N+1 문제 해결)
   *
   * @param zooIds Zoo ID 목록
   * @return Map<Zoo ID, 활성 동물 수>
   */
  Map<Long, Long> countActiveAnimalsByZooIds(List<Long> zooIds);
}
