package com.zioinfo.kintex.ai.nlquery;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

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

/**
 * F092 자연어 조회 전용 read-only 실행 매퍼. <b>{@link NlQuerySqlGuard} 통과 SQL 만</b> 전달받아 실행한다.
 *
 * <p>이 매퍼는 오직 SELECT 결과를 {@code LinkedHashMap}(컬럼 순서 보존) 리스트로 반환한다.
 * SQL 은 XML {@code ${sql}} 로 그대로 실행되므로, 호출자는 반드시 사전에 가드 검증을 거쳐야 한다.
 * 실제 실행은 {@code @Transactional(readOnly=true)} 하에서 이루어진다(이중 방어).
 */
@Mapper
public interface NlQueryReadMapper {

    /** 가드 통과 SELECT 실행. 결과 각 행은 컬럼 순서를 보존한 LinkedHashMap. */
    List<Map<String, Object>> runReadOnly(@Param("sql") String sql);
}
