package net.northking.cctp.common.db.ds;

/**
 * 动态数据源(多线程安全)
 */
public class DynamicDataSourceContext
{
  private DynamicDataSourceContext()
  {
  }

  /**
   * 数据源名称
   */
  private static final ThreadLocal<String> DataSourceName = new ThreadLocal<>();

  /**
   * 切换数据源(多线程安全)
   *
   * @param dataSourceName 数据源名称
   */
  public static void switchTo(String dataSourceName)
  {
    DataSourceName.set(dataSourceName);
  }

  /**
   * 获取数据源名称(多线程安全)
   *
   * @return 数据源名称
   */
  public static String getDataSourceName()
  {
    return DataSourceName.get();
  }

  /**
   * 重置数据源名称
   */
  public static void unload()
  {
    DataSourceName.remove();
  }

}
