package incheon.product.geoview2d.search.service;

import incheon.product.geoview2d.search.vo.AddressCoordinateVO;
import incheon.product.geoview2d.search.vo.AdmResultVO;
import incheon.product.geoview2d.search.vo.AdmSearchVO;
import incheon.product.geoview2d.search.vo.JibunSearchResultVO;
import incheon.product.geoview2d.search.vo.PoiVO;

import java.util.List;

/**
 * 통합 검색 서비스 인터페이스.
 * 주소, 행정구역, POI 검색을 통합 제공한다.
 */
public interface SearchService {

    // ========== 주소 검색 ==========

    AddressCoordinateVO getCoordinateByBldgMngNo(String bldgMngNo);

    List<AddressCoordinateVO> getCoordinatesByBldgMngNo(List<String> bldgMngNoList);

    List<JibunSearchResultVO> getJibunSearchInfo(String keyword, int page, int size);

    // ========== 행정구역 검색 ==========

    List<AdmResultVO> getAdmList(AdmSearchVO searchVO);

    long getAdmListTotCnt(AdmSearchVO searchVO);

    // ========== POI ==========

    PoiVO getPoiById(String nfId);

    List<PoiVO> getAllPoi();

    List<PoiVO> getPoiList(String searchKeyword, String searchType, int page, int size);

    int getPoiTotalCount(String searchKeyword, String searchType);

    void createPoi(PoiVO poi);

    void updatePoi(PoiVO poi);

    void deletePoi(String nfId);
}
