package kr.co.accura.wbx.spring.datasource;

import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;

/**
 * ThreadLocal 기반 동적 데이터소스 라우팅
 * <p>
 * DataSourceAspect가 @DataSource 어노테이션을 감지하여
 * ThreadLocal에 데이터소스 키를 설정하면, 이 클래스가 해당 키를 반환합니다.
 */
public class WbxRoutingDataSource extends AbstractRoutingDataSource {

    private static final ThreadLocal<String> CONTEXT = new ThreadLocal<>();

    public static void setDataSourceKey(String key) {
        CONTEXT.set(key);
    }

    public static String getDataSourceKey() {
        return CONTEXT.get();
    }

    public static void clear() {
        CONTEXT.remove();
    }

    @Override
    protected Object determineCurrentLookupKey() {
        return CONTEXT.get();
    }
}
