From 117bb621ffc7437238babdf9539087712886564f Mon Sep 17 00:00:00 2001 From: Darin Kelkhoff Date: Fri, 14 Oct 2022 10:11:53 -0500 Subject: [PATCH] Update to accept query & filter as POST --- .../javalin/QJavalinImplementation.java | 5 ++++ .../javalin/QJavalinImplementationTest.java | 24 +++++++++++++++++++ 2 files changed, 29 insertions(+) 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 3a6b1013..82675603 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 @@ -278,6 +278,7 @@ public class QJavalinImplementation path("/data/{table}", () -> { get("/", QJavalinImplementation::dataQuery); + post("/query", QJavalinImplementation::dataQuery); post("/", QJavalinImplementation::dataInsert); // todo - internal to that method, if input is a list, do a bulk - else, single. get("/count", QJavalinImplementation::dataCount); get("/export", QJavalinImplementation::dataExportWithoutFilename); @@ -606,6 +607,10 @@ public class QJavalinImplementation queryInput.setLimit(integerQueryParam(context, "limit")); String filter = stringQueryParam(context, "filter"); + if(!StringUtils.hasContent(filter)) + { + filter = context.formParam("filter"); + } if(filter != null) { queryInput.setFilter(JsonUtils.toObject(filter, QQueryFilter.class)); diff --git a/qqq-middleware-javalin/src/test/java/com/kingsrook/qqq/backend/javalin/QJavalinImplementationTest.java b/qqq-middleware-javalin/src/test/java/com/kingsrook/qqq/backend/javalin/QJavalinImplementationTest.java index c54fe78e..1bd19c93 100644 --- a/qqq-middleware-javalin/src/test/java/com/kingsrook/qqq/backend/javalin/QJavalinImplementationTest.java +++ b/qqq-middleware-javalin/src/test/java/com/kingsrook/qqq/backend/javalin/QJavalinImplementationTest.java @@ -285,6 +285,30 @@ class QJavalinImplementationTest extends QJavalinTestBase + /******************************************************************************* + ** test a table query using an actual filter via POST. + ** + *******************************************************************************/ + @Test + public void test_dataQueryWithFilterPOST() + { + String filterJson = getFirstNameEqualsTimFilterJSON(); + HttpResponse response = Unirest.post(BASE_URL + "/data/person/query") + .field("filter", filterJson) + .asString(); + + assertEquals(200, response.getStatus()); + JSONObject jsonObject = JsonUtils.toJSONObject(response.getBody()); + assertTrue(jsonObject.has("records")); + JSONArray records = jsonObject.getJSONArray("records"); + assertEquals(1, records.length()); + JSONObject record0 = records.getJSONObject(0); + JSONObject values0 = record0.getJSONObject("values"); + assertEquals("Tim", values0.getString("firstName")); + } + + + /******************************************************************************* ** *******************************************************************************/