mirror of https://gitee.com/stylefeng/roses
【8.0】【ds】更新ds一个接口,获取当前环境的数据源类型
parent
41da9445c1
commit
c0838ab20d
|
@ -4,6 +4,7 @@ import cn.stylefeng.roses.kernel.dsctn.api.exception.DatasourceContainerExceptio
|
|||
import cn.stylefeng.roses.kernel.dsctn.api.pojo.DataBaseInfoDto;
|
||||
import cn.stylefeng.roses.kernel.dsctn.api.pojo.DataSourceDto;
|
||||
import cn.stylefeng.roses.kernel.dsctn.api.pojo.request.DatabaseInfoRequest;
|
||||
import cn.stylefeng.roses.kernel.rule.enums.DbTypeEnum;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
@ -52,4 +53,12 @@ public interface DataSourceApi {
|
|||
*/
|
||||
List<DataBaseInfoDto> getDatasourceList();
|
||||
|
||||
/**
|
||||
* 获取当前运行环境下的数据库类型
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @since 2023/8/15 14:43
|
||||
*/
|
||||
DbTypeEnum getCurrentDbType();
|
||||
|
||||
}
|
||||
|
|
|
@ -32,6 +32,7 @@ import cn.stylefeng.roses.kernel.db.api.factory.PageFactory;
|
|||
import cn.stylefeng.roses.kernel.db.api.factory.PageResultFactory;
|
||||
import cn.stylefeng.roses.kernel.db.api.pojo.druid.DruidProperties;
|
||||
import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult;
|
||||
import cn.stylefeng.roses.kernel.dsctn.api.context.CurrentDataSourceContext;
|
||||
import cn.stylefeng.roses.kernel.dsctn.api.exception.DatasourceContainerException;
|
||||
import cn.stylefeng.roses.kernel.dsctn.api.exception.enums.DatasourceContainerExceptionEnum;
|
||||
import cn.stylefeng.roses.kernel.dsctn.api.pojo.DataBaseInfoDto;
|
||||
|
@ -50,6 +51,7 @@ import cn.stylefeng.roses.kernel.rule.constants.RuleConstants;
|
|||
import cn.stylefeng.roses.kernel.rule.enums.DbTypeEnum;
|
||||
import cn.stylefeng.roses.kernel.rule.enums.StatusEnum;
|
||||
import cn.stylefeng.roses.kernel.rule.enums.YesOrNotEnum;
|
||||
import cn.stylefeng.roses.kernel.rule.util.DatabaseTypeUtil;
|
||||
import com.alibaba.druid.pool.DruidDataSource;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
|
@ -64,6 +66,7 @@ import java.sql.Connection;
|
|||
import java.sql.DriverManager;
|
||||
import java.sql.SQLException;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static cn.stylefeng.roses.kernel.dsctn.api.constants.DatasourceContainerConstants.DATASOURCE_GROUP_CODE;
|
||||
|
@ -131,6 +134,33 @@ public class DatabaseInfoServiceImpl extends ServiceImpl<DatabaseInfoMapper, Dat
|
|||
}).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@Override
|
||||
public DbTypeEnum getCurrentDbType() {
|
||||
|
||||
// 获取当前上下文中的数据源名称
|
||||
String dataSourceName = CurrentDataSourceContext.getDataSourceName();
|
||||
if (StrUtil.isEmpty(dataSourceName)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
// 获取数据源名称对应的datasource表中的url信息
|
||||
Map<String, DruidProperties> dataSourcesProps = DataSourceContext.getDataSourcesConfs();
|
||||
DruidProperties druidProperties = dataSourcesProps.get(dataSourceName);
|
||||
|
||||
// 如果查询不到当前环境的数据源信息,则返回空
|
||||
if (druidProperties == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
String url = druidProperties.getUrl();
|
||||
if (ObjectUtil.isNotEmpty(url)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
// 根据url信息获取数据源的类型
|
||||
return DatabaseTypeUtil.getDbType(url);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void del(DatabaseInfoRequest databaseInfoRequest) {
|
||||
|
@ -236,7 +266,8 @@ public class DatabaseInfoServiceImpl extends ServiceImpl<DatabaseInfoMapper, Dat
|
|||
Class.forName(param.getJdbcDriver());
|
||||
conn = DriverManager.getConnection(param.getJdbcUrl(), param.getUsername(), param.getPassword());
|
||||
} catch (Exception e) {
|
||||
throw new DatasourceContainerException(DatasourceContainerExceptionEnum.VALIDATE_DATASOURCE_ERROR, param.getJdbcUrl(), e.getMessage());
|
||||
throw new DatasourceContainerException(DatasourceContainerExceptionEnum.VALIDATE_DATASOURCE_ERROR, param.getJdbcUrl(),
|
||||
e.getMessage());
|
||||
} finally {
|
||||
if (conn != null) {
|
||||
try {
|
||||
|
@ -275,7 +306,8 @@ public class DatabaseInfoServiceImpl extends ServiceImpl<DatabaseInfoMapper, Dat
|
|||
// 先判断context中是否有了这个数据源
|
||||
DataSource dataSource = DataSourceContext.getDataSources().get(databaseInfo.getDbName());
|
||||
if (dataSource != null) {
|
||||
String userTip = StrUtil.format(DatasourceContainerExceptionEnum.DATASOURCE_NAME_REPEAT.getUserTip(), databaseInfo.getDbName());
|
||||
String userTip = StrUtil.format(DatasourceContainerExceptionEnum.DATASOURCE_NAME_REPEAT.getUserTip(),
|
||||
databaseInfo.getDbName());
|
||||
throw new DatasourceContainerException(DatasourceContainerExceptionEnum.DATASOURCE_NAME_REPEAT, userTip);
|
||||
}
|
||||
}
|
||||
|
@ -304,7 +336,8 @@ public class DatabaseInfoServiceImpl extends ServiceImpl<DatabaseInfoMapper, Dat
|
|||
private DatabaseInfo queryDatabaseInfoById(DatabaseInfoRequest databaseInfoRequest) {
|
||||
DatabaseInfo databaseInfo = this.getById(databaseInfoRequest.getDbId());
|
||||
if (databaseInfo == null) {
|
||||
throw new DatasourceContainerException(DatasourceContainerExceptionEnum.DATASOURCE_INFO_NOT_EXISTED, databaseInfoRequest.getDbId());
|
||||
throw new DatasourceContainerException(DatasourceContainerExceptionEnum.DATASOURCE_INFO_NOT_EXISTED,
|
||||
databaseInfoRequest.getDbId());
|
||||
}
|
||||
return databaseInfo;
|
||||
}
|
||||
|
@ -332,7 +365,8 @@ public class DatabaseInfoServiceImpl extends ServiceImpl<DatabaseInfoMapper, Dat
|
|||
queryWrapper.like(ObjectUtil.isNotEmpty(dbName), DatabaseInfo::getDbName, dbName);
|
||||
|
||||
// 拼接状态条件
|
||||
queryWrapper.eq(ObjectUtil.isNotEmpty(databaseInfoRequest.getStatusFlag()), DatabaseInfo::getStatusFlag, databaseInfoRequest.getStatusFlag());
|
||||
queryWrapper.eq(ObjectUtil.isNotEmpty(databaseInfoRequest.getStatusFlag()), DatabaseInfo::getStatusFlag,
|
||||
databaseInfoRequest.getStatusFlag());
|
||||
|
||||
// 拼接分组相关的查询条件
|
||||
String conditionGroupName = databaseInfoRequest.getConditionGroupName();
|
||||
|
|
Loading…
Reference in New Issue