diff --git a/qqq-middleware-javalin/src/main/java/com/kingsrook/qqq/backend/javalin/QJavalinImplementation.java b/qqq-middleware-javalin/src/main/java/com/kingsrook/qqq/backend/javalin/QJavalinImplementation.java index 5ed116b1..e889188e 100644 --- a/qqq-middleware-javalin/src/main/java/com/kingsrook/qqq/backend/javalin/QJavalinImplementation.java +++ b/qqq-middleware-javalin/src/main/java/com/kingsrook/qqq/backend/javalin/QJavalinImplementation.java @@ -1366,7 +1366,7 @@ public class QJavalinImplementation if(queryInput.getFilter() == null || queryInput.getFilter().getLimit() == null) { - handleQueryNullLimit(context, queryInput); + QJavalinUtils.handleQueryNullLimit(javalinMetaData, queryInput, context); } List queryJoins = processQueryJoinsParam(context); @@ -1389,28 +1389,6 @@ public class QJavalinImplementation - /*************************************************************************** - ** - ***************************************************************************/ - private static void handleQueryNullLimit(Context context, QueryInput queryInput) - { - boolean allowed = javalinMetaData.getQueryWithoutLimitAllowed(); - if(!allowed) - { - if(queryInput.getFilter() == null) - { - queryInput.setFilter(new QQueryFilter()); - } - - queryInput.getFilter().setLimit(javalinMetaData.getQueryWithoutLimitDefault()); - LOG.log(javalinMetaData.getQueryWithoutLimitLogLevel(), "Query request did not specify a limit, which is not allowed. Using default instead", null, - logPair("defaultLimit", javalinMetaData.getQueryWithoutLimitDefault()), - logPair("path", context.path())); - } - } - - - /******************************************************************************* ** *******************************************************************************/ diff --git a/qqq-middleware-javalin/src/main/java/com/kingsrook/qqq/backend/javalin/QJavalinUtils.java b/qqq-middleware-javalin/src/main/java/com/kingsrook/qqq/backend/javalin/QJavalinUtils.java index f335601d..2dd2ba70 100644 --- a/qqq-middleware-javalin/src/main/java/com/kingsrook/qqq/backend/javalin/QJavalinUtils.java +++ b/qqq-middleware-javalin/src/main/java/com/kingsrook/qqq/backend/javalin/QJavalinUtils.java @@ -31,12 +31,15 @@ import com.kingsrook.qqq.backend.core.exceptions.QPermissionDeniedException; import com.kingsrook.qqq.backend.core.exceptions.QUserFacingException; import com.kingsrook.qqq.backend.core.exceptions.QValueException; import com.kingsrook.qqq.backend.core.logging.QLogger; +import com.kingsrook.qqq.backend.core.model.actions.tables.query.QQueryFilter; +import com.kingsrook.qqq.backend.core.model.actions.tables.query.QueryInput; import com.kingsrook.qqq.backend.core.utils.ExceptionUtils; import com.kingsrook.qqq.backend.core.utils.JsonUtils; import com.kingsrook.qqq.backend.core.utils.StringUtils; import com.kingsrook.qqq.backend.core.utils.ValueUtils; import io.javalin.http.Context; import org.eclipse.jetty.http.HttpStatus; +import static com.kingsrook.qqq.backend.core.logging.LogUtils.logPair; /******************************************************************************* @@ -48,7 +51,6 @@ public class QJavalinUtils - /******************************************************************************* ** Returns Integer if context has a valid int query parameter by the given name, ** Returns null if no param (or empty value). @@ -252,4 +254,32 @@ public class QJavalinUtils context.status(statusCode.getCode()); context.result(JsonUtils.toJson(Map.of("error", errorMessage))); } + + + + /*************************************************************************** + ** + ***************************************************************************/ + public static void handleQueryNullLimit(QJavalinMetaData javalinMetaData, QueryInput queryInput, Context context) + { + if(javalinMetaData == null) + { + javalinMetaData = new QJavalinMetaData(); + } + + boolean allowed = javalinMetaData.getQueryWithoutLimitAllowed(); + if(!allowed) + { + if(queryInput.getFilter() == null) + { + queryInput.setFilter(new QQueryFilter()); + } + + queryInput.getFilter().setLimit(javalinMetaData.getQueryWithoutLimitDefault()); + LOG.log(javalinMetaData.getQueryWithoutLimitLogLevel(), "Query request did not specify a limit, which is not allowed. Using default instead", null, + logPair("defaultLimit", javalinMetaData.getQueryWithoutLimitDefault()), + logPair("path", context == null ? null : context.path())); + } + } + }