From 21cd07b2dfaef62e730ec79aa1f125f848398ab3 Mon Sep 17 00:00:00 2001 From: Darin Kelkhoff Date: Mon, 3 Oct 2022 10:40:45 -0500 Subject: [PATCH] Update scrubValues method to make instants out of DateTimes - fixes update actions in javalin apps --- .../rdbms/actions/AbstractRDBMSAction.java | 4 ++++ .../rdbms/actions/RDBMSUpdateActionTest.java | 19 +++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/qqq-backend-module-rdbms/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/AbstractRDBMSAction.java b/qqq-backend-module-rdbms/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/AbstractRDBMSAction.java index 3ec0545f..6e11d546 100644 --- a/qqq-backend-module-rdbms/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/AbstractRDBMSAction.java +++ b/qqq-backend-module-rdbms/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/AbstractRDBMSAction.java @@ -125,6 +125,10 @@ public abstract class AbstractRDBMSAction implements QActionInterface { value = ValueUtils.getValueAsLocalDate(value); } + else if(field.getType().equals(QFieldType.DATE_TIME) && value instanceof String) + { + value = ValueUtils.getValueAsInstant(value); + } else if(field.getType().equals(QFieldType.DECIMAL) && value instanceof String) { value = ValueUtils.getValueAsBigDecimal(value); diff --git a/qqq-backend-module-rdbms/src/test/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSUpdateActionTest.java b/qqq-backend-module-rdbms/src/test/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSUpdateActionTest.java index 2ee2f22d..e1bedd6f 100644 --- a/qqq-backend-module-rdbms/src/test/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSUpdateActionTest.java +++ b/qqq-backend-module-rdbms/src/test/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSUpdateActionTest.java @@ -327,6 +327,25 @@ public class RDBMSUpdateActionTest extends RDBMSActionTest + /******************************************************************************* + ** This situation - fails in a real mysql, but not in h2... anyway, because mysql + ** didn't want to convert the date-time string format to a date-time. + *******************************************************************************/ + @Test + void testDateTimesCanBeModifiedFromIsoStrings() throws Exception + { + UpdateInput updateInput = initUpdateRequest(); + List records = new ArrayList<>(); + records.add(new QRecord().withTableName("person") + .withValue("id", 1) + .withValue("createDate", "2022-10-03T10:29:35Z") + .withValue("firstName", "Johnny Updated")); + updateInput.setRecords(records); + new RDBMSUpdateAction().execute(updateInput); + } + + + /******************************************************************************* ** *******************************************************************************/