Checkpoint

This commit is contained in:
Darin Kelkhoff
2021-11-08 21:11:30 -06:00
parent aa4125efae
commit 18a95f79a7
4 changed files with 7 additions and 75 deletions

View File

@ -6,7 +6,7 @@
<groupId>com.kingsrook.qqq</groupId>
<artifactId>qqq-backend-module-rdbms</artifactId>
<version>1.0-SNAPSHOT</version>
<version>0.0-SNAPSHOT</version>
<properties>
<!-- props specifically to this module -->

View File

@ -1,7 +1,6 @@
package com.kingsrook.qqq.backend.module.rdbms.actions;
import java.io.Serializable;
import java.sql.Connection;
import java.util.ArrayList;
import java.util.List;
@ -9,8 +8,6 @@ import java.util.stream.Collectors;
import com.kingsrook.qqq.backend.core.exceptions.QException;
import com.kingsrook.qqq.backend.core.model.actions.InsertRequest;
import com.kingsrook.qqq.backend.core.model.actions.InsertResult;
import com.kingsrook.qqq.backend.core.model.actions.QFilterCriteria;
import com.kingsrook.qqq.backend.core.model.actions.QFilterOrderBy;
import com.kingsrook.qqq.backend.core.model.data.QRecord;
import com.kingsrook.qqq.backend.core.model.data.QRecordWithStatus;
import com.kingsrook.qqq.backend.core.model.metadata.QFieldMetaData;
@ -37,7 +34,7 @@ public class RDBMSInsertAction extends AbstractRDBMSAction implements InsertInte
InsertResult rs = new InsertResult();
QTableMetaData table = insertRequest.getTable();
List<QFieldMetaData> insertableFields = table.getFields().stream()
List<QFieldMetaData> insertableFields = table.getFields().values().stream()
.filter(field -> !field.getName().equals("id")) // todo - intent here is to avoid non-insertable fields.
.toList();
@ -98,71 +95,4 @@ public class RDBMSInsertAction extends AbstractRDBMSAction implements InsertInte
}
}
/*******************************************************************************
**
*******************************************************************************/
private String makeWhereClause(QTableMetaData table, List<QFilterCriteria> criteria, List<Serializable> params) throws IllegalArgumentException
{
List<String> clauses = new ArrayList<>();
for(QFilterCriteria criterion : criteria)
{
QFieldMetaData field = table.getField(criterion.getFieldName());
String column = getColumnName(field);
String clause = column;
Integer expectedNoOfParams = null;
switch(criterion.getOperator())
{
case EQUALS:
{
clause += " = ? ";
expectedNoOfParams = 1;
break;
}
case NOT_EQUALS:
{
clause += " != ? ";
expectedNoOfParams = 1;
break;
}
case IN:
{
clause += " IN (" + criterion.getValues().stream().map(x -> "?").collect(Collectors.joining(",")) + ") ";
break;
}
default:
{
throw new IllegalArgumentException("Unexpected operator: " + criterion.getOperator());
}
}
clauses.add(clause);
if(expectedNoOfParams != null && criterion.getValues().size() != expectedNoOfParams)
{
throw new IllegalArgumentException("Incorrect number of values given for criteria [" + field.getName() + "]");
}
params.addAll(criterion.getValues());
}
return (String.join(" AND ", clauses));
}
/*******************************************************************************
**
*******************************************************************************/
private String makeOrderByClause(QTableMetaData table, List<QFilterOrderBy> orderBys)
{
List<String> clauses = new ArrayList<>();
for(QFilterOrderBy orderBy : orderBys)
{
QFieldMetaData field = table.getField(orderBy.getFieldName());
String column = getColumnName(field);
clauses.add(column + " " + (orderBy.getIsAscending() ? "ASC" : "DESC"));
}
return (String.join(", ", clauses));
}
}

View File

@ -41,7 +41,8 @@ public class RDBMSQueryAction extends AbstractRDBMSAction implements QueryInterf
QTableMetaData table = queryRequest.getTable();
String tableName = table.getName();
String columns = table.getFields().stream()
List<QFieldMetaData> fieldList = new ArrayList<>(table.getFields().values());
String columns = fieldList.stream()
.map(this::getColumnName)
.collect(Collectors.joining(", "));
@ -93,7 +94,7 @@ public class RDBMSQueryAction extends AbstractRDBMSAction implements QueryInterf
for(int i = 1; i <= metaData.getColumnCount(); i++)
{
QFieldMetaData qFieldMetaData = table.getFields().get(i - 1);
QFieldMetaData qFieldMetaData = fieldList.get(i - 1);
String value = QueryManager.getString(resultSet, i); // todo - types!
values.put(qFieldMetaData.getName(), value);
if(qFieldMetaData.getName().equals(table.getPrimaryKeyField()))

View File

@ -4,7 +4,7 @@ package com.kingsrook.qqq.backend.module.rdbms.actions;
import java.io.InputStream;
import java.sql.Connection;
import java.util.List;
import com.kingsrook.qqq.backend.core.model.QInstance;
import com.kingsrook.qqq.backend.core.model.metadata.QInstance;
import com.kingsrook.qqq.backend.core.model.metadata.QBackendMetaData;
import com.kingsrook.qqq.backend.core.model.metadata.QFieldMetaData;
import com.kingsrook.qqq.backend.core.model.metadata.QFieldType;
@ -59,6 +59,7 @@ public class RDBMSActionTest
{
return new QTableMetaData()
.withName("person")
.withLabel("Person")
.withBackendName(defineBackend().getName())
.withPrimaryKeyField("id")
.withField(new QFieldMetaData("id", QFieldType.INTEGER))