diff --git a/qqq-middleware-api/pom.xml b/qqq-middleware-api/pom.xml
index 5a2d3c6a..b9572da8 100644
--- a/qqq-middleware-api/pom.xml
+++ b/qqq-middleware-api/pom.xml
@@ -54,6 +54,28 @@
${revision}
+
+
+ com.kingsrook.qqq
+ qqq-middleware-javalin
+ ${revision}
+ tests
+ test-jar
+ test
+
+
+ com.kingsrook.qqq
+ qqq-backend-module-rdbms
+ ${revision}
+ test
+
+
+ com.h2database
+ h2
+ 2.2.220
+ test
+
+
com.konghq
@@ -106,4 +128,4 @@
-
\ No newline at end of file
+
diff --git a/qqq-middleware-api/src/main/java/com/kingsrook/qqq/api/actions/ApiImplementation.java b/qqq-middleware-api/src/main/java/com/kingsrook/qqq/api/actions/ApiImplementation.java
index 2525263f..f92c8716 100644
--- a/qqq-middleware-api/src/main/java/com/kingsrook/qqq/api/actions/ApiImplementation.java
+++ b/qqq-middleware-api/src/main/java/com/kingsrook/qqq/api/actions/ApiImplementation.java
@@ -338,7 +338,7 @@ public class ApiImplementation
else if(apiFieldMetaData.getCustomValueMapper() != null)
{
ApiFieldCustomValueMapper customValueMapper = QCodeLoader.getAdHoc(ApiFieldCustomValueMapper.class, apiFieldMetaData.getCustomValueMapper());
- customValueMapper.customizeFilterCriteria(queryInput, filter, criteria, name, apiFieldMetaData);
+ customValueMapper.customizeFilterCriteriaForQueryOrCount(queryInput, filter, criteria, name, apiFieldMetaData);
}
filter.addCriteria(criteria);
@@ -389,8 +389,14 @@ public class ApiImplementation
/////////////////////////////
if(includeCount)
{
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+ // todo - at one time we wondered if we might need a call to customValueMapper.customizeFilterCriteriaForQueryOrCount //
+ // as the filter would have already gone through there, but not other attributes of the input, e.g, joins... //
+ // but, instead we're trying to just put the query joins in here FROM the query input... //
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
CountInput countInput = new CountInput();
countInput.setTableName(tableName);
+ countInput.setQueryJoins(queryInput.getQueryJoins());
countInput.setFilter(filter);
countInput.withQueryHint(QueryHint.MAY_USE_READ_ONLY_BACKEND);
CountOutput countOutput = new CountAction().execute(countInput);
diff --git a/qqq-middleware-api/src/main/java/com/kingsrook/qqq/api/actions/GetTableApiFieldsAction.java b/qqq-middleware-api/src/main/java/com/kingsrook/qqq/api/actions/GetTableApiFieldsAction.java
index 02c585bb..86332a51 100644
--- a/qqq-middleware-api/src/main/java/com/kingsrook/qqq/api/actions/GetTableApiFieldsAction.java
+++ b/qqq-middleware-api/src/main/java/com/kingsrook/qqq/api/actions/GetTableApiFieldsAction.java
@@ -31,6 +31,7 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import com.kingsrook.qqq.api.model.APIVersion;
+import com.kingsrook.qqq.api.model.APIVersionRange;
import com.kingsrook.qqq.api.model.actions.GetTableApiFieldsInput;
import com.kingsrook.qqq.api.model.actions.GetTableApiFieldsOutput;
import com.kingsrook.qqq.api.model.metadata.fields.ApiFieldMetaData;
@@ -39,10 +40,13 @@ import com.kingsrook.qqq.api.model.metadata.tables.ApiTableMetaDataContainer;
import com.kingsrook.qqq.backend.core.actions.AbstractQActionFunction;
import com.kingsrook.qqq.backend.core.context.QContext;
import com.kingsrook.qqq.backend.core.exceptions.QException;
+import com.kingsrook.qqq.backend.core.exceptions.QNotFoundException;
+import com.kingsrook.qqq.backend.core.logging.QLogger;
import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldMetaData;
import com.kingsrook.qqq.backend.core.model.metadata.tables.QTableMetaData;
import com.kingsrook.qqq.backend.core.utils.CollectionUtils;
import com.kingsrook.qqq.backend.core.utils.ObjectUtils;
+import static com.kingsrook.qqq.backend.core.logging.LogUtils.logPair;
/*******************************************************************************
@@ -51,6 +55,8 @@ import com.kingsrook.qqq.backend.core.utils.ObjectUtils;
*******************************************************************************/
public class GetTableApiFieldsAction extends AbstractQActionFunction
{
+ private static final QLogger LOG = QLogger.getLogger(GetTableApiFieldsAction.class);
+
private static Map> fieldListCache = new HashMap<>();
private static Map> fieldMapCache = new HashMap<>();
@@ -141,13 +147,16 @@ public class GetTableApiFieldsAction extends AbstractQActionFunction> qRecordsToApiMapList(List records, String tableName, String apiName, String apiVersion) throws QException
+ {
+ Map fieldValueMappers = getFieldValueMappers(records, tableName, apiName, apiVersion);
+
+ ArrayList