package com.qiaoba.api.tenant.utils;

import com.qiaoba.api.tenant.entity.SysTenant;
import com.qiaoba.api.tenant.enums.TenantModeEnum;
import com.qiaoba.common.base.constant.TenantConstant;
import com.qiaoba.common.base.context.BaseContext;
import com.qiaoba.common.database.context.TenantDbTypeContext;

/**
 * TenantUtil
 *
 * @author ailanyin
 * @version 1.0
 * @since 2023-07-01 08:34:20
 */
public class TenantUtil {

    /**
     * 设置上下文信息
     *
     * @param sysTenant 租户
     */
    public static void setContext(SysTenant sysTenant) {
        BaseContext.setTenantId(sysTenant.getTenantId());
        BaseContext.setSchema(sysTenant.getMode().equals(TenantModeEnum.SCHEMA.getMode()));
        // 数据源模式-设置第三方数据源
        if (TenantModeEnum.isDatasource(sysTenant.getMode())) {
            //设置当前租户对应的数据源
            BaseContext.setDataSource(sysTenant.getTenantId());
            BaseContext.setDatabaseType(TenantDbTypeContext.get(sysTenant.getTenantId()));
        }
        // 字段模式 or Schema模式-数据源选择默认数据源
        else {
            BaseContext.setDataSource(TenantConstant.DEFAULT_TENANT_ID);
            BaseContext.setDatabaseType(TenantDbTypeContext.getDefault());
        }
    }
}
