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

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

上级 e20c1a37
......@@ -2,6 +2,7 @@ package io.dataease.listener;
import io.dataease.service.datasource.DatasourceService;
import io.dataease.service.dataset.DataSetTableService;
import io.dataease.service.engine.EngineService;
import org.springframework.boot.context.event.ApplicationReadyEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.core.annotation.Order;
......@@ -15,11 +16,14 @@ public class DataSourceInitStartListener implements ApplicationListener<Applicat
private DatasourceService datasourceService;
@Resource
private DataSetTableService dataSetTableService;
@Resource
private EngineService engineService;
@Override
public void onApplicationEvent(ApplicationReadyEvent applicationReadyEvent) {
datasourceService.initAllDataSourceConnectionPool();
// dataSetTableService.updateDatasetTableStatus();
dataSetTableService.updateDatasetTableStatus();
engineService.initSimpleEngine();
}
......
......@@ -8,6 +8,7 @@ import io.dataease.commons.utils.HttpClientConfig;
import io.dataease.commons.utils.HttpClientUtil;
import io.dataease.controller.ResultHolder;
import io.dataease.dto.datasource.DorisConfiguration;
import io.dataease.dto.datasource.MysqlConfiguration;
import io.dataease.listener.util.CacheUtils;
import io.dataease.plugins.common.base.domain.Datasource;
import io.dataease.plugins.common.base.domain.DeEngine;
......@@ -25,14 +26,15 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.sql.Array;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@Service
@Transactional(rollbackFor = Exception.class)
public class EngineService {
@Resource
private Environment env;
private Environment env;
@Resource
private DeEngineMapper deEngineMapper;
@Resource
......@@ -196,5 +198,34 @@ public class EngineService {
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 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论