package com.zioinfo.signage.rag;

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

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

/**
 * ESN RAG 기법 토글 매퍼 — 테넌트 격리 {@code signage_rag_setting}.
 *
 * <p>{@code @Mapper} 어노테이션 필수 (SignageApplication 의
 * {@code @MapperScan(annotationClass = Mapper.class)} 패턴).
 *
 * <p>모든 조회/변경은 {@code tenant_code} 로 격리된다 — 한 테넌트가 다른 테넌트 토글을
 * 읽거나 바꿀 수 없다.
 */
@Mapper
public interface RagSettingMapper {

    /** 한 테넌트의 모든 RAG 토글(key,value). */
    List<Map<String, Object>> findByTenant(@Param("tenantCode") String tenantCode);

    /** 단건 조회. */
    String findValue(@Param("tenantCode") String tenantCode,
                     @Param("settingKey") String settingKey);

    /** upsert (ON CONFLICT (tenant_code, setting_key) DO UPDATE). */
    int upsert(@Param("tenantCode") String tenantCode,
               @Param("settingKey") String settingKey,
               @Param("settingValue") String settingValue);
}
