fixes from Maksim Tereshin

This commit is contained in:
kochetkov 2024-09-19 12:52:53 +03:00
parent d762e3f034
commit de196866b7
2 changed files with 26 additions and 16 deletions

View file

@ -3,7 +3,9 @@ package org.micord.models;
import lombok.Setter;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
import java.util.List;
/**
* @author Maksim Tereshin
@ -13,7 +15,7 @@ import javax.xml.bind.annotation.XmlRootElement;
public class RequestArgument {
private String id;
private String aqlCollectionRead;
private List<String> aqlCollectionRead;
private String requestURL;
private SqlConnectionParams sqlConnectionParams;
@ -27,8 +29,9 @@ public class RequestArgument {
return id;
}
@XmlElementWrapper(name = "AqlCollectionReads")
@XmlElement(name = "AqlCollectionRead")
public String getAqlCollectionRead() {
public List<String> getAqlCollectionRead() {
return aqlCollectionRead;
}

View file

@ -60,10 +60,13 @@ public class SqlAqlService {
}
private String buildSqlQuery(SqlRequest request, String ids) {
StringBuilder clauseBuilder = new StringBuilder("id IN (" + ids + ")");
StringBuilder clauseBuilder = new StringBuilder();
if (request.getRequestArguments() != null && !request.getRequestArguments().isEmpty()) {
for (RequestArgument argument : request.getRequestArguments()) {
clauseBuilder.append(argument.getId()).append(" IN (").append(ids).append(")");
if (argument.getSqlConnectionParams() != null) {
try (Connection connection = DatabaseConnection.getConnection(argument.getSqlConnectionParams())) {
String query = argument.getRequestURL();
List<String> result = fetchFileListFromDatabaseSQL(connection, query);
@ -79,9 +82,13 @@ public class SqlAqlService {
}
}
}
}
String clause = clauseBuilder.toString();
return request.getRequestURL().replace("${DB}", request.getSqlConnectionParams().getJdbcDatabase()).replace("${clause}", clause);
return request.getRequestURL()
.replace("${DB}", request.getSqlConnectionParams().getJdbcDatabase())
.replace("${clause}", clause)
.replace("${ids}", ids);
}
private void executeSqlQuery(Connection connection, String query) throws SQLException {
@ -105,14 +112,14 @@ public class SqlAqlService {
ArangoDatabase arangoDb = ArangoDBConnection.getConnection(request.getAqlConnectionParams());
RequestArgument requestArgument = request.getRequestArguments().get(0);
String aqlCollectionRead = requestArgument.getAqlCollectionRead();
List<String> aqlCollectionRead = requestArgument.getAqlCollectionRead();
String aqlCollectionWrite = requestArgument.getId();
StreamTransactionEntity tx = null;
try {
StreamTransactionOptions options = new StreamTransactionOptions()
.writeCollections(aqlCollectionWrite)
.readCollections(aqlCollectionRead);
.readCollections(aqlCollectionRead.toArray(new String[0]));
tx = arangoDb.beginStreamTransaction(options);
String transactionId = tx.getId();