diff --git a/backend/src/main/java/io/dataease/listener/DataSourceInitStartListener.java b/backend/src/main/java/io/dataease/listener/DataSourceInitStartListener.java index d3170c606b..d9c360d1a8 100644 --- a/backend/src/main/java/io/dataease/listener/DataSourceInitStartListener.java +++ b/backend/src/main/java/io/dataease/listener/DataSourceInitStartListener.java @@ -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 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); + } + }