package cn.iocoder.yudao.module.llm.framework.backend.config;

import cn.hutool.json.JSONObject;
import cn.iocoder.yudao.module.llm.handler.JSONObjectTypeHandler;
import cn.iocoder.yudao.module.llm.handler.ListHashMapTypeHandler;
import com.baomidou.mybatisplus.autoconfigure.ConfigurationCustomizer;
import org.apache.ibatis.type.TypeHandlerRegistry;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.HashMap;
import java.util.List;

@Configuration
@MapperScan("cn.iocoder.yudao.module.llm.dal.mysql.*")
public class MyBatisConfig {

    @Bean
    public JSONObjectTypeHandler jsonObjectTypeHandler() {
        return new JSONObjectTypeHandler();
    }

    @Bean
    public ListHashMapTypeHandler listHashMapTypeHandler() {
        return new ListHashMapTypeHandler();
    }

    @Bean
    public ConfigurationCustomizer configurationCustomizer() {
        return configuration -> {
            TypeHandlerRegistry typeHandlerRegistry = configuration.getTypeHandlerRegistry();
            if (!typeHandlerRegistry.hasTypeHandler(JSONObject.class)) {
                typeHandlerRegistry.register(JSONObject.class, jsonObjectTypeHandler());
            }
            // 注册 List<HashMap<String, Object>> 类型的处理器
            if (!typeHandlerRegistry.hasTypeHandler(List.class)){
                typeHandlerRegistry.register(List.class, listHashMapTypeHandler());
            }
        };
    }


}
