From fc4e69f0597d35245668e2810e5094e0c810cb5e Mon Sep 17 00:00:00 2001 From: t-samples Date: Mon, 26 Aug 2024 12:14:01 -0500 Subject: [PATCH] CE-1546 - feedback from code review --- .../rdbms/actions/RDBMSInsertAction.java | 2 +- .../module/rdbms/jdbc/QueryManager.java | 22 ++++--------------- 2 files changed, 5 insertions(+), 19 deletions(-) diff --git a/qqq-backend-module-rdbms/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSInsertAction.java b/qqq-backend-module-rdbms/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSInsertAction.java index e8488b84..42ac344c 100644 --- a/qqq-backend-module-rdbms/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSInsertAction.java +++ b/qqq-backend-module-rdbms/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSInsertAction.java @@ -146,7 +146,7 @@ public class RDBMSInsertAction extends AbstractRDBMSAction implements InsertInte // todo sql customization - can edit sql and/or param list // todo - non-serial-id style tables // todo - other generated values, e.g., createDate... maybe need to re-select? - List idList = QueryManager.executeInsertForGeneratedIds(connection, sql.toString(), params, table.getFields()); + List idList = QueryManager.executeInsertForGeneratedIds(connection, sql.toString(), params, table.getField(table.getPrimaryKeyField()).getType()); int index = 0; for(QRecord record : page) { diff --git a/qqq-backend-module-rdbms/src/main/java/com/kingsrook/qqq/backend/module/rdbms/jdbc/QueryManager.java b/qqq-backend-module-rdbms/src/main/java/com/kingsrook/qqq/backend/module/rdbms/jdbc/QueryManager.java index 9c345b68..ceed311a 100644 --- a/qqq-backend-module-rdbms/src/main/java/com/kingsrook/qqq/backend/module/rdbms/jdbc/QueryManager.java +++ b/qqq-backend-module-rdbms/src/main/java/com/kingsrook/qqq/backend/module/rdbms/jdbc/QueryManager.java @@ -51,10 +51,8 @@ import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Optional; import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.logging.QLogger; -import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldMetaData; import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldType; import com.kingsrook.qqq.backend.core.model.metadata.possiblevalues.PossibleValueEnum; import com.kingsrook.qqq.backend.core.utils.CollectionUtils; @@ -529,7 +527,7 @@ public class QueryManager /******************************************************************************* ** todo - needs (specific) unit test *******************************************************************************/ - public static List executeInsertForGeneratedIds(Connection connection, String sql, List params, Map fields) throws SQLException + public static List executeInsertForGeneratedIds(Connection connection, String sql, List params, QFieldType idType) throws SQLException { try(PreparedStatement statement = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)) { @@ -538,23 +536,11 @@ public class QueryManager statement.executeUpdate(); ///////////////////////////////////////////////////////////// - // We default to idType of INTEGER but if we are passed in // - // fields attempt to find the dataType of the id field // + // We default to idType of INTEGER if it was not passed in // ///////////////////////////////////////////////////////////// - QFieldType idType = QFieldType.INTEGER; - if(fields != null && !fields.isEmpty()) + if(idType == null) { - Optional field = fields.values().stream() - .filter(f -> f.getName().equals("id")) - .findFirst(); - - if(field.isPresent()) - { - ///////////////////////////////////////////////////////// - // if we find "id" field get the type and use it below // - ///////////////////////////////////////////////////////// - idType = field.get().getType(); - } + idType = QFieldType.INTEGER; } ResultSet generatedKeys = statement.getGeneratedKeys();