diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/audits/DMLAuditAction.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/audits/DMLAuditAction.java index 8c2f747e..2c268f02 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/audits/DMLAuditAction.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/audits/DMLAuditAction.java @@ -79,7 +79,6 @@ public class DMLAuditAction extends AbstractQActionFunction recordList = input.getRecordList(); List oldRecordList = input.getOldRecordList(); QTableMetaData table = tableActionInput.getTable(); long start = System.currentTimeMillis(); @@ -87,6 +86,9 @@ public class DMLAuditAction extends AbstractQActionFunction recordList = CollectionUtils.nonNullList(input.getRecordList()).stream() + .filter(r -> CollectionUtils.nullSafeIsEmpty(r.getErrors())).toList(); + AuditLevel auditLevel = getAuditLevel(tableActionInput); if(auditLevel == null || auditLevel.equals(AuditLevel.NONE) || CollectionUtils.nullSafeIsEmpty(recordList)) { diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/audits/DMLAuditActionTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/audits/DMLAuditActionTest.java index 954c079f..9d8f8b47 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/audits/DMLAuditActionTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/audits/DMLAuditActionTest.java @@ -36,6 +36,7 @@ import com.kingsrook.qqq.backend.core.model.data.QRecord; import com.kingsrook.qqq.backend.core.model.metadata.QInstance; import com.kingsrook.qqq.backend.core.model.metadata.audits.AuditLevel; import com.kingsrook.qqq.backend.core.model.metadata.audits.QAuditRules; +import com.kingsrook.qqq.backend.core.model.statusmessages.BadInputStatusMessage; import com.kingsrook.qqq.backend.core.modules.backend.implementations.memory.MemoryRecordStore; import com.kingsrook.qqq.backend.core.utils.TestUtils; import org.junit.jupiter.api.Test; @@ -184,6 +185,19 @@ class DMLAuditActionTest extends BaseTest assertEquals(0, auditList.size()); MemoryRecordStore.getInstance().reset(); } + + //////////////////////////////////////////////////// + // confirm we don't audit for records with errors // + //////////////////////////////////////////////////// + { + qInstance.getTable(TestUtils.TABLE_NAME_PERSON_MEMORY).setAuditRules(new QAuditRules().withAuditLevel(AuditLevel.FIELD)); + new DMLAuditAction().execute(new DMLAuditInput().withTableActionInput(updateInput) + .withRecordList(List.of(new QRecord().withValue("id", 1).withValue("firstName", "B").withError(new BadInputStatusMessage("Error")))) + .withOldRecordList(List.of(new QRecord().withValue("id", 1).withValue("firstName", "A")))); + List auditList = TestUtils.queryTable("audit"); + assertEquals(0, auditList.size()); + MemoryRecordStore.getInstance().reset(); + } } } \ No newline at end of file