|
|
@@ -7,6 +7,7 @@ import cn.hutool.core.util.StrUtil;
|
|
|
import com.baomidou.dynamic.datasource.DynamicRoutingDataSource;
|
|
|
import com.baomidou.mybatisplus.spring.service.impl.ServiceImpl;
|
|
|
import com.zsjz.ai.common.cache.CaseDataCache;
|
|
|
+import com.zsjz.ai.common.config.DuckdbUnpooledDataSource;
|
|
|
import com.zsjz.ai.common.constants.PathConst;
|
|
|
import com.zsjz.ai.common.constants.StrConsts;
|
|
|
import com.zsjz.ai.common.exception.ServerException;
|
|
|
@@ -16,9 +17,9 @@ import com.zsjz.ai.common.utils.LuceneManager;
|
|
|
import com.zsjz.ai.common.utils.StateManager;
|
|
|
import com.zsjz.ai.module.plat.mapper.CaseInfoMapper;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
-import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import javax.sql.DataSource;
|
|
|
import java.nio.file.Files;
|
|
|
import java.nio.file.Path;
|
|
|
import java.time.LocalDateTime;
|
|
|
@@ -30,11 +31,14 @@ import java.time.LocalDateTime;
|
|
|
@Service
|
|
|
public class CaseInfoService extends ServiceImpl<CaseInfoMapper, CaseInfo> {
|
|
|
|
|
|
- @Autowired
|
|
|
- private DynamicRoutingDataSource dynamicDataSource;
|
|
|
+ private final DynamicRoutingDataSource dynamicDataSource;
|
|
|
|
|
|
- @Autowired
|
|
|
- private SseService sseService;
|
|
|
+ private final SseService sseService;
|
|
|
+
|
|
|
+ public CaseInfoService(DataSource dataSource, SseService sseService) {
|
|
|
+ this.dynamicDataSource = (DynamicRoutingDataSource) dataSource;
|
|
|
+ this.sseService = sseService;
|
|
|
+ }
|
|
|
|
|
|
/**
|
|
|
* 创建案件
|
|
|
@@ -145,7 +149,7 @@ public class CaseInfoService extends ServiceImpl<CaseInfoMapper, CaseInfo> {
|
|
|
private void closeOldDb() {
|
|
|
try {
|
|
|
LuceneManager.close();
|
|
|
- dynamicDataSource.removeDataSource(StrConsts.DS_KEY_CASE);
|
|
|
+ dynamicDataSource.removeDataSource(StrConsts.DS_KEY_SLAVE);
|
|
|
CaseDataCache.cleanCache();
|
|
|
sseService.closeSee();
|
|
|
} catch (Exception e) {
|
|
|
@@ -155,11 +159,9 @@ public class CaseInfoService extends ServiceImpl<CaseInfoMapper, CaseInfo> {
|
|
|
}
|
|
|
|
|
|
private void openNewDb(String dbPath) {
|
|
|
- //Props props = Solon.cfg().getProp("qingjian.db1.case");
|
|
|
- //props.setProperty("url", "jdbc:duckdb:" + dbPath);
|
|
|
- //DataSource dataSource = DsUtils.buildDs(props);
|
|
|
- //dynamicDataSource.setDefaultTargetDataSource(dataSource);
|
|
|
- //dynamicDataSource.addTargetDataSource(StrConsts.DS_KEY_CASE, dataSource);
|
|
|
+ // 创建新的 DuckDB 数据源并覆盖 slave
|
|
|
+ DuckdbUnpooledDataSource dataSource = new DuckdbUnpooledDataSource("jdbc:duckdb:" + dbPath, "org.duckdb.DuckDBDriver");
|
|
|
+ dynamicDataSource.addDataSource(StrConsts.DS_KEY_SLAVE, dataSource);
|
|
|
}
|
|
|
|
|
|
public void exit() {
|