package com.zioinfo.esn.ai.mapper;

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

/**
 * esn_setting(key/value) 접근 매퍼 — AI provider 런타임 설정 저장소. [ZIOINFO-ESN]
 *
 * <p>설정 전용 경량 key/value 테이블(esn_setting, db/104_seed_ai_config.sql 에서 멱등 생성).
 * 어노테이션 SQL 로 정의(별도 XML 없음). {@code @MapperScan(annotationClass=Mapper.class)} 로 스캔된다.
 */
@Mapper
public interface SettingMapper {

    /** key 에 해당하는 value(없으면 null). */
    @Select("SELECT value FROM esn_setting WHERE key = #{key}")
    String findValue(@Param("key") String key);

    /** upsert(멱등) — 존재 시 value 갱신, 없으면 삽입. */
    @Update("INSERT INTO esn_setting(key, value) VALUES(#{key}, #{value}) "
            + "ON CONFLICT (key) DO UPDATE SET value = EXCLUDED.value")
    void upsert(@Param("key") String key, @Param("value") String value);
}
