package incheon.ags.ias.srvy.srvyResult.mapper;

import incheon.ags.ias.srvy.srvyResult.vo.SrvyResultSearchVO;
import incheon.ags.ias.srvy.srvyResult.vo.SrvyResultVO;
import incheon.ags.ias.srvy.srvyResult.vo.SrvyResultDetailVO;
import incheon.ags.ias.srvy.srvyResult.vo.SrvyQitemResultVO;
import incheon.ags.ias.srvy.srvyResult.vo.SrvyQitemArtclResultVO;
import org.egovframe.rte.psl.dataaccess.mapper.Mapper;
import org.apache.ibatis.annotations.Param;

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

/**
 * 설문 결과 Mapper
 */
@org.egovframe.rte.psl.dataaccess.mapper.Mapper @incheon.com.config.annotation.MainDB public interface SrvyResultMapper {

    /**
     * 설문 결과 목록 조회
     */
    List<SrvyResultVO> selectSrvyResultList(SrvyResultSearchVO searchVO);

    /**
     * 설문 결과 목록 총 개수 조회
     */
    int selectSrvyResultListCnt(SrvyResultSearchVO searchVO);

    /**
     * 설문 결과 상세 조회
     */
    SrvyResultDetailVO selectSrvyResultDetail(@Param("srvySn") Integer srvySn);

    /**
     * 설문 문항 결과 조회
     */
    List<SrvyQitemResultVO> selectSrvyQitemResultList(@Param("srvySn") Integer srvySn);

    /**
     * 설문 문항 선택지 결과 조회
     */
    List<SrvyQitemArtclResultVO> selectSrvyQitemArtclResultList(@Param("srvySn") Integer srvySn);

    /**
     * 주관식 답변 조회
     */
    List<String> selectSubjectiveAnswers(@Param("srvyQitemSn") Integer srvyQitemSn);

    /**
     * 주관식 답변 배치 조회 (N+1 문제 해결)
     */
    List<Map<String, Object>> selectSubjectiveAnswersBatch(@Param("qitemIds") List<Integer> qitemIds);
}
