package incheon.product.geoview3d.theme.mapper;

import incheon.com.config.annotation.ExternalDB;
import incheon.product.geoview3d.theme.vo.ThemeCategoryVO;
import incheon.product.geoview3d.theme.vo.ThemeLayerVO;
import org.apache.ibatis.annotations.Param;
import org.egovframe.rte.psl.dataaccess.mapper.Mapper;

import java.util.List;
import java.util.Map;

/**
 * 주제도 매퍼. icsgp 스키마의 주제도 관련 데이터를 조회한다.
 */
@Mapper("productThemeMapper")
@ExternalDB
public interface ThemeMapper {

    /** 주제도 목록 JSON */
    String selectThemeListJson();

    /** 단일 주제도 JSON */
    String selectThemeJson(@Param("thmId") String thmId, @Param("q") String q, @Param("limit") Integer limit);

    /** 카테고리 목록 */
    List<ThemeCategoryVO> selectThemeCategories();

    /** 레이어 목록 */
    List<ThemeLayerVO> selectThemeLayers();

    /** 필터 소스 테이블 조회 */
    String selectThemeFilterSourceTable(@Param("themeId") String themeId);

    /** 필터 값 목록 */
    List<String> selectThemeFilterList(@Param("sourceTable") String sourceTable, @Param("filterName") String filterName);

    /** 계층 필터 값 목록 */
    List<String> selectThemeFilterListByParent(@Param("sourceTable") String sourceTable,
                                               @Param("filterName1") String filterName1,
                                               @Param("filterValue") String filterValue,
                                               @Param("filterName2") String filterName2);

    /** 선거구 지오메트리 */
    String selectElectionGeomByPoiId(@Param("poiId") String poiId);

    /** 쓰레기봉투 가격 */
    List<Map<String, Object>> selectWasteBagPriceList(@Param("sgg") String sgg);
}
