package org.dayatang.datasource4saas;
import javax.sql.DataSource;
import java.util.Date;
import java.util.Map;
/**
* 租户数据源注册表,为每个租户注册专用的数据源
* @author yyang (<a href="mailto:gdyangyu@gmail.com">gdyangyu@gmail.com</a>)
*
*/
public interface DataSourceRegistry {
/**
* 获得与租户对应数据源
* @param tenant 租户标识
* @return 对应租户tenant的数据源
*/
DataSource getDataSourceOfTenant(String tenant);
/**
* 给租户指定数据源
* @param tenant 数据源所属的租户
* @param dataSource 要注册的数据源
*/
void registerDataSourceForTenant(String tenant, DataSource dataSource);
/**
* 批量注册租户数据源
* @param dataSources 租户数据源映射。以租户标识为key,对应数据源为value
*/
void registerDataSources(Map<String, DataSource> dataSources);
/**
* 从注册表中去除指定租户对应的数据源
* @param tenant
*/
void unregisterDataSourceOfTenant(String tenant);
/**
* Clear/release all cached DataSource.
*/
void releaseAllDataSources();
/**
* 租户最后访问数据源的时间
* @param tenant
* @return
*/
Date getLastAccessTimeOfTenant(String tenant);
/**
* 获得注册表中注册的数据源的数量
* @return
*/
int size();
/**
* 判断是否已经为指定租户注册数据源
* @param tenant
* @return
*/
boolean existsDataSourceOfTenant(String tenant);
}