From d4181cc157aac786791158b7a0d98ce63d58d81e Mon Sep 17 00:00:00 2001 From: Darin Kelkhoff Date: Thu, 13 Apr 2023 15:21:43 -0500 Subject: [PATCH] Make unique key helper more helpful --- .../core/actions/tables/InsertAction.java | 2 +- .../actions/tables/helpers/UniqueKeyHelper.java | 17 +++++++++-------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/tables/InsertAction.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/tables/InsertAction.java index 97a65c35..5cbbb2ad 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/tables/InsertAction.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/tables/InsertAction.java @@ -213,7 +213,7 @@ public class InsertAction extends AbstractQActionFunction uniqueKeys = CollectionUtils.nonNullList(table.getUniqueKeys()); for(UniqueKey uniqueKey : uniqueKeys) { - existingKeys.put(uniqueKey, UniqueKeyHelper.getExistingKeys(insertInput, insertInput.getTransaction(), table, insertInput.getRecords(), uniqueKey)); + existingKeys.put(uniqueKey, UniqueKeyHelper.getExistingKeys(insertInput.getTransaction(), table, insertInput.getRecords(), uniqueKey).keySet()); } ///////////////////////////////////// diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/tables/helpers/UniqueKeyHelper.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/tables/helpers/UniqueKeyHelper.java index 55a17644..adab071e 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/tables/helpers/UniqueKeyHelper.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/tables/helpers/UniqueKeyHelper.java @@ -24,15 +24,14 @@ package com.kingsrook.qqq.backend.core.actions.tables.helpers; import java.io.Serializable; import java.util.ArrayList; -import java.util.HashSet; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.Optional; -import java.util.Set; import java.util.stream.Collectors; import com.kingsrook.qqq.backend.core.actions.QBackendTransaction; import com.kingsrook.qqq.backend.core.actions.tables.QueryAction; import com.kingsrook.qqq.backend.core.exceptions.QException; -import com.kingsrook.qqq.backend.core.model.actions.AbstractActionInput; 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; @@ -55,10 +54,10 @@ public class UniqueKeyHelper /******************************************************************************* ** *******************************************************************************/ - public static Set> getExistingKeys(AbstractActionInput actionInput, QBackendTransaction transaction, QTableMetaData table, List recordList, UniqueKey uniqueKey) throws QException + public static Map, Serializable> getExistingKeys(QBackendTransaction transaction, QTableMetaData table, List recordList, UniqueKey uniqueKey) throws QException { - List ukFieldNames = uniqueKey.getFieldNames(); - Set> existingRecords = new HashSet<>(); + List ukFieldNames = uniqueKey.getFieldNames(); + Map, Serializable> existingRecords = new HashMap<>(); if(ukFieldNames != null) { QueryInput queryInput = new QueryInput(); @@ -114,8 +113,10 @@ public class UniqueKeyHelper for(QRecord record : queryOutput.getRecords()) { Optional> keyValues = getKeyValues(table, uniqueKey, record); - keyValues.ifPresent(existingRecords::add); - + if(keyValues.isPresent()) + { + existingRecords.put(keyValues.get(), record.getValue(table.getPrimaryKeyField())); + } } }