From 37fbfd1c7c80a63d5a629cfce90e2cbbd5aa7691 Mon Sep 17 00:00:00 2001 From: Darin Kelkhoff Date: Fri, 14 Oct 2022 10:19:21 -0500 Subject: [PATCH] Update to accept count filter as POST --- .../javalin/QJavalinImplementation.java | 5 +++ .../javalin/QJavalinImplementationTest.java | 42 +++++++++++++++++++ 2 files changed, 47 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 82675603..1f1cbe7a 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 @@ -281,6 +281,7 @@ public class QJavalinImplementation 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); + post("/count", QJavalinImplementation::dataCount); get("/export", QJavalinImplementation::dataExportWithoutFilename); get("/export/{filename}", QJavalinImplementation::dataExportWithFilename); get("/possibleValues/{fieldName}", QJavalinImplementation::possibleValues); @@ -562,6 +563,10 @@ public class QJavalinImplementation countInput.setTableName(context.pathParam("table")); String filter = stringQueryParam(context, "filter"); + if(!StringUtils.hasContent(filter)) + { + filter = context.formParam("filter"); + } if(filter != null) { countInput.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 1bd19c93..07a37be7 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 @@ -239,6 +239,48 @@ class QJavalinImplementationTest extends QJavalinTestBase + /******************************************************************************* + ** test a table count with a filter. + ** + *******************************************************************************/ + @Test + public void test_dataCountWithFilter() + { + String filterJson = getFirstNameEqualsTimFilterJSON(); + HttpResponse response = Unirest.get(BASE_URL + "/data/person/count?filter=" + URLEncoder.encode(filterJson, StandardCharsets.UTF_8)).asString(); + + assertEquals(200, response.getStatus()); + JSONObject jsonObject = JsonUtils.toJSONObject(response.getBody()); + + assertTrue(jsonObject.has("count")); + int count = jsonObject.getInt("count"); + assertEquals(1, count); + } + + + + /******************************************************************************* + ** test a table count POST. + ** + *******************************************************************************/ + @Test + public void test_dataCountPOST() + { + String filterJson = getFirstNameEqualsTimFilterJSON(); + HttpResponse response = Unirest.post(BASE_URL + "/data/person/count") + .field("filter", filterJson) + .asString(); + + assertEquals(200, response.getStatus()); + JSONObject jsonObject = JsonUtils.toJSONObject(response.getBody()); + + assertTrue(jsonObject.has("count")); + int count = jsonObject.getInt("count"); + assertEquals(1, count); + } + + + /******************************************************************************* ** test a table query **