package incheon.cmm.g2f.sample.service;

import java.util.List;

import incheon.cmm.g2f.sample.vo.AddressSearchRequestVO;
import incheon.cmm.g2f.sample.vo.AddressSearchResponseVO;
import incheon.cmm.g2f.sample.vo.CoorSearchRequestVO;
import incheon.cmm.g2f.sample.vo.CoorSearchResponseVO;
import incheon.cmm.g2f.sample.vo.G2FSampleVO;
import incheon.cmm.g2f.sample.vo.PoiSearchRequestVO;
import incheon.cmm.g2f.sample.vo.PoiSearchResponseVO;

public interface G2FSampleService {

    void delete(String nfId);

    void update(G2FSampleVO poi);

    void create(G2FSampleVO poi);

    int getTotalCount(String searchKeyword, String searchType);

    List<G2FSampleVO> getList(String searchKeyword, String searchType, int page, int size);

    List<G2FSampleVO> getList();

    G2FSampleVO getById(String nfId);
    /**
     * 주소 검색
     * @param request 주소 검색 요청
     * @return 주소 검색 결과
     */
    AddressSearchResponseVO searchAddress(AddressSearchRequestVO request) throws Exception;
    
    /**
     * POI 검색
     * @param request POI 검색 요청
     * @return POI 검색 결과
     */
    PoiSearchResponseVO searchPoi(PoiSearchRequestVO request) throws Exception;
    
    /**
     * 좌표 기반 POI 검색
     * @param request 좌표 검색 요청
     * @return 좌표 기반 POI 검색 결과
     */
    CoorSearchResponseVO searchPoiByLocation(CoorSearchRequestVO request) throws Exception;
}