package com.qiaoba.common.database.context;

import com.qiaoba.common.base.constant.TenantConstant;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

/**
 * 主要(正在使用)数据源
 *
 * @author ailanyin
 * @version 1.0
 * @since 2023/6/28 10:36
 */
public class PrimaryDatasourceContext {

    /**
     * 主要数据源
     */
    private static Map<Object, Object> PRIMARY_DATASOURCE_MAP = new ConcurrentHashMap<>();

    public static Map<Object, Object> getAll() {
        return PRIMARY_DATASOURCE_MAP;
    }

    /**
     * 获取租户主要数据源
     *
     * @param tenantId 租户ID
     * @return 数据源
     */
    public static Object get(String tenantId) {
        return PRIMARY_DATASOURCE_MAP.get(tenantId);
    }

    /**
     * 获取默认(主)主要数据源
     *
     * @return 数据源
     */
    public static Object getDefault() {
        return PRIMARY_DATASOURCE_MAP.get(TenantConstant.DEFAULT_TENANT_ID);
    }

    /**
     * 设置租户主要数据源
     *
     * @param tenantId   租户ID
     * @param datasource 数据源
     */
    public static void set(String tenantId, Object datasource) {
        PRIMARY_DATASOURCE_MAP.put(tenantId, datasource);
    }

    /**
     * 删除
     *
     * @param tenantId 租户ID
     */
    public static void remove(String tenantId) {
        PRIMARY_DATASOURCE_MAP.remove(tenantId);
    }
}
