feat:support Serializable

This commit is contained in:
SwallowGG
2024-03-15 14:07:51 +08:00
parent 3ae6f88247
commit 0fe586d263
33 changed files with 207 additions and 239 deletions

View File

@ -37,6 +37,9 @@ public class DlExecuteParam {
private String databaseName;
private String tableName;
/**
* schema name
*/

View File

@ -27,6 +27,14 @@ public interface DlTemplateService {
ListResult<ExecuteResult> execute(DlExecuteParam param);
/**
*
* @param param
* @return
*/
ListResult<ExecuteResult> executeSelectTable(DlExecuteParam param);
/**
* Data source execution update
*

View File

@ -111,11 +111,6 @@
<artifactId>chat2db-presto</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>ai.chat2db</groupId>
<artifactId>chat2db-redis</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>ai.chat2db</groupId>
<artifactId>chat2db-sqlite</artifactId>

View File

@ -17,7 +17,6 @@ import ai.chat2db.spi.ValueHandler;
import ai.chat2db.spi.model.*;
import ai.chat2db.spi.sql.Chat2DBContext;
import ai.chat2db.spi.sql.ConnectInfo;
import ai.chat2db.spi.sql.SQLExecutor;
import ai.chat2db.spi.util.JdbcUtils;
import ai.chat2db.spi.util.SqlUtils;
import com.alibaba.druid.DbType;
@ -28,6 +27,7 @@ import com.alibaba.druid.sql.ast.statement.SQLSelectStatement;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -61,12 +61,15 @@ public class DlTemplateServiceImpl implements DlTemplateService {
CommandExecutor executor = Chat2DBContext.getMetaData().getCommandExecutor();
Command command = commandConverter.param2model(param);
List<ExecuteResult> results = executor.execute(command);
return reBuildHeader(results,param.getSchemaName(),param.getDatabaseName());
}
private ListResult<ExecuteResult> reBuildHeader(List<ExecuteResult> results,String schemaName,String databaseName){
ListResult<ExecuteResult> listResult = ListResult.of(results);
for (ExecuteResult executeResult : results) {
List<Header> headers = executeResult.getHeaderList();
if (executeResult.getSuccess() && executeResult.isCanEdit() && CollectionUtils.isNotEmpty(headers)) {
headers = setColumnInfo(headers, executeResult.getTableName(), param.getSchemaName(),
param.getDatabaseName());
headers = setColumnInfo(headers, executeResult.getTableName(), schemaName, databaseName);
executeResult.setHeaderList(headers);
}
if (!executeResult.getSuccess()) {
@ -77,12 +80,13 @@ public class DlTemplateServiceImpl implements DlTemplateService {
addOperationLog(executeResult);
}
return listResult;
}
// if ("SQLSERVER".equalsIgnoreCase(type)) {
// RemoveSpecialGO(param);
// }
@Override
public ListResult<ExecuteResult> executeSelectTable(DlExecuteParam param) {
Command command = commandConverter.param2model(param);
List<ExecuteResult> results = Chat2DBContext.getMetaData().getCommandExecutor().executeSelectTable(command);
return reBuildHeader(results,param.getSchemaName(),param.getDatabaseName());
}
@Override
@ -159,8 +163,9 @@ public class DlTemplateServiceImpl implements DlTemplateService {
@Override
public DataResult<String> updateSelectResult(UpdateSelectResultParam param) {
SqlBuilder sqlBuilder = Chat2DBContext.getSqlBuilder();
String sql = sqlBuilder.generateSqlBasedOnResults(param.getTableName(), param.getHeaderList(),
param.getOperations());
QueryResult queryResult = new QueryResult();
BeanUtils.copyProperties(param, queryResult);
String sql = sqlBuilder.buildSqlByQuery(queryResult);
return DataResult.of(sql);
}