From 8833563d26bd06dad3734126f83aa078ff32e065 Mon Sep 17 00:00:00 2001 From: Darin Kelkhoff Date: Mon, 20 Feb 2023 09:58:36 -0600 Subject: [PATCH] Update to fetch full records for audit purposes, if security key is needed --- .../core/actions/tables/DeleteAction.java | 24 +++++++++++++++---- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/tables/DeleteAction.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/tables/DeleteAction.java index 71e67e7a..b74733e3 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/tables/DeleteAction.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/tables/DeleteAction.java @@ -33,6 +33,9 @@ import com.kingsrook.qqq.backend.core.logging.QLogger; import com.kingsrook.qqq.backend.core.model.actions.audits.DMLAuditInput; import com.kingsrook.qqq.backend.core.model.actions.tables.delete.DeleteInput; import com.kingsrook.qqq.backend.core.model.actions.tables.delete.DeleteOutput; +import com.kingsrook.qqq.backend.core.model.actions.tables.query.QCriteriaOperator; +import com.kingsrook.qqq.backend.core.model.actions.tables.query.QFilterCriteria; +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.model.actions.tables.query.QueryOutput; import com.kingsrook.qqq.backend.core.model.data.QRecord; @@ -85,9 +88,6 @@ public class DeleteAction } } - /******************************************************************************* - ** - *******************************************************************************/ List recordListForAudit = getRecordListForAuditIfNeeded(deleteInput); DeleteOutput deleteOutput = deleteInterface.execute(deleteInput); @@ -116,9 +116,23 @@ public class DeleteAction primaryKeyList = getPrimaryKeysFromQueryFilter(deleteInput); } - if(primaryKeyList != null) + if(CollectionUtils.nullSafeHasContents(primaryKeyList)) { - recordListForAudit = primaryKeyList.stream().map(pk -> new QRecord().withValue(deleteInput.getTable().getPrimaryKeyField(), pk)).toList(); + if(CollectionUtils.nullSafeHasContents(deleteInput.getTable().getRecordSecurityLocks())) + { + //////////////////////////////////////////////////////////////////////////////////////////////////////// + // if the table has any security locks, then we need full entities (to record the keys), not just ids // + //////////////////////////////////////////////////////////////////////////////////////////////////////// + QueryInput queryInput = new QueryInput(); + queryInput.setTableName(deleteInput.getTableName()); + queryInput.setFilter(new QQueryFilter(new QFilterCriteria(deleteInput.getTable().getPrimaryKeyField(), QCriteriaOperator.IN, primaryKeyList))); + QueryOutput queryOutput = new QueryAction().execute(queryInput); + recordListForAudit = queryOutput.getRecords(); + } + else + { + recordListForAudit = primaryKeyList.stream().map(pk -> new QRecord().withValue(deleteInput.getTable().getPrimaryKeyField(), pk)).toList(); + } } }