package org.qinan.safetyeval.infrastructure.adapter;


import org.qinan.safetyeval.infrastructure.utils.RequestHandlerUtil;
import org.springframework.web.context.request.RequestContextHolder;

/**
 * 基于 ThreadLocal 的用户信息适配器默认实现
 * <p>
 * 提供 set/clear 方法用于设置和清理当前线程的用户上下文。
 * 用户可替换为自定义实现（如从 SecurityContext、Redis 获取）。
 * </p>
 *
 * @author safety-eval
 */
public class ThreadLocalUserInfoAdapter {

    private static final ThreadLocal<Long> ORG_ID = new ThreadLocal<>();

    public static Long get() {
        return RequestHandlerUtil.getOrgId();
    }

    /**
     * 设置当前线程的用户上下文信息
     */
    public static void set(Long orgId) {
        ORG_ID.set(orgId);
    }

    /**
     * 清除当前线程的用户上下文信息，避免内存泄漏
     */
    public static void clear() {
        ORG_ID.remove();
    }
}
