提交 a5d8d6cb authored 作者: taojinlong's avatar taojinlong

feat: Simple 模式下,DataEase 在启动时读取数据库配置文件自动添加引擎设置参数

上级 e20c1a37
...@@ -2,6 +2,7 @@ package io.dataease.listener; ...@@ -2,6 +2,7 @@ package io.dataease.listener;
import io.dataease.service.datasource.DatasourceService; import io.dataease.service.datasource.DatasourceService;
import io.dataease.service.dataset.DataSetTableService; import io.dataease.service.dataset.DataSetTableService;
import io.dataease.service.engine.EngineService;
import org.springframework.boot.context.event.ApplicationReadyEvent; import org.springframework.boot.context.event.ApplicationReadyEvent;
import org.springframework.context.ApplicationListener; import org.springframework.context.ApplicationListener;
import org.springframework.core.annotation.Order; import org.springframework.core.annotation.Order;
...@@ -15,11 +16,14 @@ public class DataSourceInitStartListener implements ApplicationListener<Applicat ...@@ -15,11 +16,14 @@ public class DataSourceInitStartListener implements ApplicationListener<Applicat
private DatasourceService datasourceService; private DatasourceService datasourceService;
@Resource @Resource
private DataSetTableService dataSetTableService; private DataSetTableService dataSetTableService;
@Resource
private EngineService engineService;
@Override @Override
public void onApplicationEvent(ApplicationReadyEvent applicationReadyEvent) { public void onApplicationEvent(ApplicationReadyEvent applicationReadyEvent) {
datasourceService.initAllDataSourceConnectionPool(); datasourceService.initAllDataSourceConnectionPool();
// dataSetTableService.updateDatasetTableStatus(); dataSetTableService.updateDatasetTableStatus();
engineService.initSimpleEngine();
} }
......
...@@ -8,6 +8,7 @@ import io.dataease.commons.utils.HttpClientConfig; ...@@ -8,6 +8,7 @@ import io.dataease.commons.utils.HttpClientConfig;
import io.dataease.commons.utils.HttpClientUtil; import io.dataease.commons.utils.HttpClientUtil;
import io.dataease.controller.ResultHolder; import io.dataease.controller.ResultHolder;
import io.dataease.dto.datasource.DorisConfiguration; import io.dataease.dto.datasource.DorisConfiguration;
import io.dataease.dto.datasource.MysqlConfiguration;
import io.dataease.listener.util.CacheUtils; import io.dataease.listener.util.CacheUtils;
import io.dataease.plugins.common.base.domain.Datasource; import io.dataease.plugins.common.base.domain.Datasource;
import io.dataease.plugins.common.base.domain.DeEngine; import io.dataease.plugins.common.base.domain.DeEngine;
...@@ -25,14 +26,15 @@ import org.springframework.stereotype.Service; ...@@ -25,14 +26,15 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.sql.Array;
import java.util.*; import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@Service @Service
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public class EngineService { public class EngineService {
@Resource @Resource
private Environment env; private Environment env;
@Resource @Resource
private DeEngineMapper deEngineMapper; private DeEngineMapper deEngineMapper;
@Resource @Resource
...@@ -196,5 +198,34 @@ public class EngineService { ...@@ -196,5 +198,34 @@ public class EngineService {
return datasource; return datasource;
} }
public void initSimpleEngine(){
if (!isSimpleMode()) {
return;
}
DeEngineExample engineExample = new DeEngineExample();
engineExample.createCriteria().andTypeEqualTo("engine_mysql");
List<DeEngine> deEngines = deEngineMapper.selectByExampleWithBLOBs(engineExample);
if (CollectionUtils.isNotEmpty(deEngines)) {
return;
}
DeEngine engine = new DeEngine();
engine.setId(UUID.randomUUID().toString());
engine.setType("engine_mysql");
MysqlConfiguration mysqlConfiguration = new MysqlConfiguration();
Pattern WITH_SQL_FRAGMENT = Pattern.compile("jdbc:mysql://(.*):(\\d+)/(.*)");
Matcher matcher = WITH_SQL_FRAGMENT.matcher(env.getProperty("spring.datasource.url"));
if(!matcher.find()){
return;
};
mysqlConfiguration.setHost(matcher.group(1));
mysqlConfiguration.setPort(Integer.valueOf(matcher.group(2)));
mysqlConfiguration.setDataBase(matcher.group(3).split("\\?")[0]);
mysqlConfiguration.setExtraParams(matcher.group(3).split("\\?")[1]);
mysqlConfiguration.setUsername(env.getProperty("spring.datasource.username"));
mysqlConfiguration.setPassword(env.getProperty("spring.datasource.password"));
engine.setConfiguration(new Gson().toJson(mysqlConfiguration));
deEngineMapper.insert(engine);
}
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论