From ae70c34d4ebe8b93d5c199d0dcd85fec47c22ce3 Mon Sep 17 00:00:00 2001 From: Darin Kelkhoff Date: Thu, 14 Jul 2022 12:59:23 -0500 Subject: [PATCH] Reorganize packages; rename Request to Input and Response to Output --- pom.xml | 2 +- .../module/rdbms/RDBMSBackendModule.java | 14 +- .../rdbms/actions/AbstractRDBMSAction.java | 12 +- .../rdbms/actions/RDBMSCountAction.java | 20 +- .../rdbms/actions/RDBMSDeleteAction.java | 24 +-- .../rdbms/actions/RDBMSInsertAction.java | 26 +-- .../rdbms/actions/RDBMSQueryAction.java | 35 ++-- .../rdbms/actions/RDBMSUpdateAction.java | 22 +- .../metadata/RDBMSTableBackendDetails.java | 2 +- .../qqq/backend/module/rdbms/TestUtils.java | 6 +- .../rdbms/actions/RDBMSCountActionTest.java | 42 ++-- .../rdbms/actions/RDBMSDeleteActionTest.java | 32 +-- .../rdbms/actions/RDBMSInsertActionTest.java | 52 ++--- .../rdbms/actions/RDBMSQueryActionTest.java | 196 +++++++++--------- .../rdbms/actions/RDBMSUpdateActionTest.java | 60 +++--- src/test/resources/prime-test-database.sql | 2 +- 16 files changed, 272 insertions(+), 275 deletions(-) diff --git a/pom.xml b/pom.xml index 577f0735..5c1d4e62 100644 --- a/pom.xml +++ b/pom.xml @@ -51,7 +51,7 @@ com.kingsrook.qqq qqq-backend-core - 0.1.0 + 0.2.0-SNAPSHOT diff --git a/src/main/java/com/kingsrook/qqq/backend/module/rdbms/RDBMSBackendModule.java b/src/main/java/com/kingsrook/qqq/backend/module/rdbms/RDBMSBackendModule.java index 0820c159..194b81e0 100644 --- a/src/main/java/com/kingsrook/qqq/backend/module/rdbms/RDBMSBackendModule.java +++ b/src/main/java/com/kingsrook/qqq/backend/module/rdbms/RDBMSBackendModule.java @@ -22,14 +22,14 @@ package com.kingsrook.qqq.backend.module.rdbms; +import com.kingsrook.qqq.backend.core.actions.interfaces.CountInterface; +import com.kingsrook.qqq.backend.core.actions.interfaces.DeleteInterface; +import com.kingsrook.qqq.backend.core.actions.interfaces.InsertInterface; +import com.kingsrook.qqq.backend.core.actions.interfaces.QueryInterface; +import com.kingsrook.qqq.backend.core.actions.interfaces.UpdateInterface; import com.kingsrook.qqq.backend.core.model.metadata.QBackendMetaData; -import com.kingsrook.qqq.backend.core.model.metadata.QTableBackendDetails; -import com.kingsrook.qqq.backend.core.modules.interfaces.CountInterface; -import com.kingsrook.qqq.backend.core.modules.interfaces.DeleteInterface; -import com.kingsrook.qqq.backend.core.modules.interfaces.InsertInterface; -import com.kingsrook.qqq.backend.core.modules.interfaces.QBackendModuleInterface; -import com.kingsrook.qqq.backend.core.modules.interfaces.QueryInterface; -import com.kingsrook.qqq.backend.core.modules.interfaces.UpdateInterface; +import com.kingsrook.qqq.backend.core.model.metadata.tables.QTableBackendDetails; +import com.kingsrook.qqq.backend.core.modules.backend.QBackendModuleInterface; import com.kingsrook.qqq.backend.module.rdbms.actions.RDBMSCountAction; import com.kingsrook.qqq.backend.module.rdbms.actions.RDBMSDeleteAction; import com.kingsrook.qqq.backend.module.rdbms.actions.RDBMSInsertAction; diff --git a/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/AbstractRDBMSAction.java b/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/AbstractRDBMSAction.java index 85166328..9a9f1c1a 100644 --- a/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/AbstractRDBMSAction.java +++ b/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/AbstractRDBMSAction.java @@ -29,12 +29,12 @@ import java.util.ArrayList; import java.util.List; import java.util.function.Function; import java.util.stream.Collectors; -import com.kingsrook.qqq.backend.core.model.actions.AbstractQTableRequest; -import com.kingsrook.qqq.backend.core.model.actions.query.QFilterCriteria; +import com.kingsrook.qqq.backend.core.model.actions.AbstractTableActionInput; +import com.kingsrook.qqq.backend.core.model.actions.tables.query.QFilterCriteria; import com.kingsrook.qqq.backend.core.model.data.QRecord; -import com.kingsrook.qqq.backend.core.model.metadata.QFieldMetaData; -import com.kingsrook.qqq.backend.core.model.metadata.QFieldType; -import com.kingsrook.qqq.backend.core.model.metadata.QTableMetaData; +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.tables.QTableMetaData; import com.kingsrook.qqq.backend.core.utils.StringUtils; import com.kingsrook.qqq.backend.module.rdbms.jdbc.ConnectionManager; import com.kingsrook.qqq.backend.module.rdbms.model.metadata.RDBMSBackendMetaData; @@ -85,7 +85,7 @@ public abstract class AbstractRDBMSAction /******************************************************************************* ** Get a database connection, per the backend in the request. *******************************************************************************/ - protected Connection getConnection(AbstractQTableRequest qTableRequest) throws SQLException + protected Connection getConnection(AbstractTableActionInput qTableRequest) throws SQLException { ConnectionManager connectionManager = new ConnectionManager(); return connectionManager.getConnection((RDBMSBackendMetaData) qTableRequest.getBackend()); diff --git a/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSCountAction.java b/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSCountAction.java index d0970a73..3dc59da1 100644 --- a/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSCountAction.java +++ b/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSCountAction.java @@ -28,12 +28,12 @@ import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.util.ArrayList; import java.util.List; +import com.kingsrook.qqq.backend.core.actions.interfaces.CountInterface; import com.kingsrook.qqq.backend.core.exceptions.QException; -import com.kingsrook.qqq.backend.core.model.actions.count.CountRequest; -import com.kingsrook.qqq.backend.core.model.actions.count.CountResult; -import com.kingsrook.qqq.backend.core.model.actions.query.QQueryFilter; -import com.kingsrook.qqq.backend.core.model.metadata.QTableMetaData; -import com.kingsrook.qqq.backend.core.modules.interfaces.CountInterface; +import com.kingsrook.qqq.backend.core.model.actions.tables.count.CountInput; +import com.kingsrook.qqq.backend.core.model.actions.tables.count.CountOutput; +import com.kingsrook.qqq.backend.core.model.actions.tables.query.QQueryFilter; +import com.kingsrook.qqq.backend.core.model.metadata.tables.QTableMetaData; import com.kingsrook.qqq.backend.core.utils.CollectionUtils; import com.kingsrook.qqq.backend.module.rdbms.jdbc.QueryManager; import org.apache.logging.log4j.LogManager; @@ -52,16 +52,16 @@ public class RDBMSCountAction extends AbstractRDBMSAction implements CountInterf /******************************************************************************* ** *******************************************************************************/ - public CountResult execute(CountRequest countRequest) throws QException + public CountOutput execute(CountInput countInput) throws QException { try { - QTableMetaData table = countRequest.getTable(); + QTableMetaData table = countInput.getTable(); String tableName = getTableName(table); String sql = "SELECT count(*) as record_count FROM " + tableName; - QQueryFilter filter = countRequest.getFilter(); + QQueryFilter filter = countInput.getFilter(); List params = new ArrayList<>(); if(filter != null && CollectionUtils.nullSafeHasContents(filter.getCriteria())) { @@ -70,9 +70,9 @@ public class RDBMSCountAction extends AbstractRDBMSAction implements CountInterf // todo sql customization - can edit sql and/or param list - CountResult rs = new CountResult(); + CountOutput rs = new CountOutput(); - try(Connection connection = getConnection(countRequest)) + try(Connection connection = getConnection(countInput)) { QueryManager.executeStatement(connection, sql, ((ResultSet resultSet) -> { diff --git a/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSDeleteAction.java b/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSDeleteAction.java index ee75105d..5ea27a0a 100644 --- a/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSDeleteAction.java +++ b/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSDeleteAction.java @@ -27,12 +27,12 @@ import java.sql.Connection; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; +import com.kingsrook.qqq.backend.core.actions.interfaces.DeleteInterface; import com.kingsrook.qqq.backend.core.exceptions.QException; -import com.kingsrook.qqq.backend.core.model.actions.delete.DeleteRequest; -import com.kingsrook.qqq.backend.core.model.actions.delete.DeleteResult; +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.data.QRecord; -import com.kingsrook.qqq.backend.core.model.metadata.QTableMetaData; -import com.kingsrook.qqq.backend.core.modules.interfaces.DeleteInterface; +import com.kingsrook.qqq.backend.core.model.metadata.tables.QTableMetaData; import com.kingsrook.qqq.backend.module.rdbms.jdbc.QueryManager; @@ -45,12 +45,12 @@ public class RDBMSDeleteAction extends AbstractRDBMSAction implements DeleteInte /******************************************************************************* ** *******************************************************************************/ - public DeleteResult execute(DeleteRequest deleteRequest) throws QException + public DeleteOutput execute(DeleteInput deleteInput) throws QException { try { - DeleteResult rs = new DeleteResult(); - QTableMetaData table = deleteRequest.getTable(); + DeleteOutput rs = new DeleteOutput(); + QTableMetaData table = deleteInput.getTable(); String tableName = getTableName(table); String primaryKeyName = getColumnName(table.getField(table.getPrimaryKeyField())); @@ -59,20 +59,20 @@ public class RDBMSDeleteAction extends AbstractRDBMSAction implements DeleteInte + " WHERE " + primaryKeyName + " IN (" - + deleteRequest.getPrimaryKeys().stream().map(x -> "?").collect(Collectors.joining(",")) + + deleteInput.getPrimaryKeys().stream().map(x -> "?").collect(Collectors.joining(",")) + ")"; - List params = deleteRequest.getPrimaryKeys(); + List params = deleteInput.getPrimaryKeys(); // todo sql customization - can edit sql and/or param list - try(Connection connection = getConnection(deleteRequest)) + try(Connection connection = getConnection(deleteInput)) { QueryManager.executeUpdateForRowCount(connection, sql, params); List outputRecords = new ArrayList<>(); rs.setRecords(outputRecords); - for(Serializable primaryKey : deleteRequest.getPrimaryKeys()) + for(Serializable primaryKey : deleteInput.getPrimaryKeys()) { - QRecord qRecord = new QRecord().withTableName(deleteRequest.getTableName()).withValue("id", primaryKey); + QRecord qRecord = new QRecord().withTableName(deleteInput.getTableName()).withValue("id", primaryKey); // todo uh, identify any errors? QRecord outputRecord = new QRecord(qRecord); outputRecords.add(outputRecord); diff --git a/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSInsertAction.java b/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSInsertAction.java index 0176f96c..30e2c659 100644 --- a/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSInsertAction.java +++ b/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSInsertAction.java @@ -28,13 +28,13 @@ import java.time.Instant; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; +import com.kingsrook.qqq.backend.core.actions.interfaces.InsertInterface; import com.kingsrook.qqq.backend.core.exceptions.QException; -import com.kingsrook.qqq.backend.core.model.actions.insert.InsertRequest; -import com.kingsrook.qqq.backend.core.model.actions.insert.InsertResult; +import com.kingsrook.qqq.backend.core.model.actions.tables.insert.InsertInput; +import com.kingsrook.qqq.backend.core.model.actions.tables.insert.InsertOutput; import com.kingsrook.qqq.backend.core.model.data.QRecord; -import com.kingsrook.qqq.backend.core.model.metadata.QFieldMetaData; -import com.kingsrook.qqq.backend.core.model.metadata.QTableMetaData; -import com.kingsrook.qqq.backend.core.modules.interfaces.InsertInterface; +import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldMetaData; +import com.kingsrook.qqq.backend.core.model.metadata.tables.QTableMetaData; import com.kingsrook.qqq.backend.core.utils.CollectionUtils; import com.kingsrook.qqq.backend.module.rdbms.jdbc.QueryManager; import org.apache.logging.log4j.LogManager; @@ -53,21 +53,21 @@ public class RDBMSInsertAction extends AbstractRDBMSAction implements InsertInte /******************************************************************************* ** *******************************************************************************/ - public InsertResult execute(InsertRequest insertRequest) throws QException + public InsertOutput execute(InsertInput insertInput) throws QException { - InsertResult rs = new InsertResult(); + InsertOutput rs = new InsertOutput(); - if(CollectionUtils.nullSafeIsEmpty(insertRequest.getRecords())) + if(CollectionUtils.nullSafeIsEmpty(insertInput.getRecords())) { LOG.info("Insert request called with 0 records. Returning with no-op"); rs.setRecords(new ArrayList<>()); return (rs); } - QTableMetaData table = insertRequest.getTable(); + QTableMetaData table = insertInput.getTable(); Instant now = Instant.now(); - for(QRecord record : insertRequest.getRecords()) + for(QRecord record : insertInput.getRecords()) { /////////////////////////////////////////// // todo .. better (not hard-coded names) // @@ -93,9 +93,9 @@ public class RDBMSInsertAction extends AbstractRDBMSAction implements InsertInte StringBuilder sql = new StringBuilder("INSERT INTO ").append(tableName).append("(").append(columns).append(") VALUES"); List params = new ArrayList<>(); - try(Connection connection = getConnection(insertRequest)) + try(Connection connection = getConnection(insertInput)) { - for(List page : CollectionUtils.getPages(insertRequest.getRecords(), QueryManager.PAGE_SIZE)) + for(List page : CollectionUtils.getPages(insertInput.getRecords(), QueryManager.PAGE_SIZE)) { int recordIndex = 0; for(QRecord record : page) @@ -120,7 +120,7 @@ public class RDBMSInsertAction extends AbstractRDBMSAction implements InsertInte List outputRecords = new ArrayList<>(); rs.setRecords(outputRecords); int index = 0; - for(QRecord record : insertRequest.getRecords()) + for(QRecord record : insertInput.getRecords()) { Integer id = idList.get(index++); QRecord outputRecord = new QRecord(record); diff --git a/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSQueryAction.java b/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSQueryAction.java index 1a7d3d3f..ed61115e 100644 --- a/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSQueryAction.java +++ b/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSQueryAction.java @@ -30,19 +30,16 @@ import java.sql.SQLException; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; -import java.util.function.Function; import java.util.stream.Collectors; +import com.kingsrook.qqq.backend.core.actions.interfaces.QueryInterface; import com.kingsrook.qqq.backend.core.exceptions.QException; -import com.kingsrook.qqq.backend.core.model.actions.query.QFilterCriteria; -import com.kingsrook.qqq.backend.core.model.actions.query.QFilterOrderBy; -import com.kingsrook.qqq.backend.core.model.actions.query.QQueryFilter; -import com.kingsrook.qqq.backend.core.model.actions.query.QueryRequest; -import com.kingsrook.qqq.backend.core.model.actions.query.QueryResult; +import com.kingsrook.qqq.backend.core.model.actions.tables.query.QFilterOrderBy; +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; -import com.kingsrook.qqq.backend.core.model.metadata.QFieldMetaData; -import com.kingsrook.qqq.backend.core.model.metadata.QFieldType; -import com.kingsrook.qqq.backend.core.model.metadata.QTableMetaData; -import com.kingsrook.qqq.backend.core.modules.interfaces.QueryInterface; +import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldMetaData; +import com.kingsrook.qqq.backend.core.model.metadata.tables.QTableMetaData; import com.kingsrook.qqq.backend.core.utils.CollectionUtils; import com.kingsrook.qqq.backend.module.rdbms.jdbc.QueryManager; import org.apache.logging.log4j.LogManager; @@ -61,11 +58,11 @@ public class RDBMSQueryAction extends AbstractRDBMSAction implements QueryInterf /******************************************************************************* ** *******************************************************************************/ - public QueryResult execute(QueryRequest queryRequest) throws QException + public QueryOutput execute(QueryInput queryInput) throws QException { try { - QTableMetaData table = queryRequest.getTable(); + QTableMetaData table = queryInput.getTable(); String tableName = getTableName(table); List fieldList = new ArrayList<>(table.getFields().values()); @@ -75,7 +72,7 @@ public class RDBMSQueryAction extends AbstractRDBMSAction implements QueryInterf String sql = "SELECT " + columns + " FROM " + tableName; - QQueryFilter filter = queryRequest.getFilter(); + QQueryFilter filter = queryInput.getFilter(); List params = new ArrayList<>(); if(filter != null && CollectionUtils.nullSafeHasContents(filter.getCriteria())) { @@ -87,24 +84,24 @@ public class RDBMSQueryAction extends AbstractRDBMSAction implements QueryInterf sql += " ORDER BY " + makeOrderByClause(table, filter.getOrderBys()); } - if(queryRequest.getLimit() != null) + if(queryInput.getLimit() != null) { - sql += " LIMIT " + queryRequest.getLimit(); + sql += " LIMIT " + queryInput.getLimit(); - if(queryRequest.getSkip() != null) + if(queryInput.getSkip() != null) { // todo - other sql grammars? - sql += " OFFSET " + queryRequest.getSkip(); + sql += " OFFSET " + queryInput.getSkip(); } } // todo sql customization - can edit sql and/or param list - QueryResult rs = new QueryResult(); + QueryOutput rs = new QueryOutput(); List records = new ArrayList<>(); rs.setRecords(records); - try(Connection connection = getConnection(queryRequest)) + try(Connection connection = getConnection(queryInput)) { QueryManager.executeStatement(connection, sql, ((ResultSet resultSet) -> { diff --git a/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSUpdateAction.java b/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSUpdateAction.java index 30a40eca..a7f6fc17 100644 --- a/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSUpdateAction.java +++ b/src/main/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSUpdateAction.java @@ -31,13 +31,13 @@ import java.util.Collections; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; +import com.kingsrook.qqq.backend.core.actions.interfaces.UpdateInterface; import com.kingsrook.qqq.backend.core.exceptions.QException; -import com.kingsrook.qqq.backend.core.model.actions.update.UpdateRequest; -import com.kingsrook.qqq.backend.core.model.actions.update.UpdateResult; +import com.kingsrook.qqq.backend.core.model.actions.tables.update.UpdateInput; +import com.kingsrook.qqq.backend.core.model.actions.tables.update.UpdateOutput; import com.kingsrook.qqq.backend.core.model.data.QRecord; -import com.kingsrook.qqq.backend.core.model.metadata.QFieldMetaData; -import com.kingsrook.qqq.backend.core.model.metadata.QTableMetaData; -import com.kingsrook.qqq.backend.core.modules.interfaces.UpdateInterface; +import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldMetaData; +import com.kingsrook.qqq.backend.core.model.metadata.tables.QTableMetaData; import com.kingsrook.qqq.backend.core.utils.CollectionUtils; import com.kingsrook.qqq.backend.core.utils.ListingHash; import com.kingsrook.qqq.backend.core.utils.StringUtils; @@ -63,18 +63,18 @@ public class RDBMSUpdateAction extends AbstractRDBMSAction implements UpdateInte /******************************************************************************* ** *******************************************************************************/ - public UpdateResult execute(UpdateRequest updateRequest) throws QException + public UpdateOutput execute(UpdateInput updateInput) throws QException { - UpdateResult rs = new UpdateResult(); + UpdateOutput rs = new UpdateOutput(); - if(CollectionUtils.nullSafeIsEmpty(updateRequest.getRecords())) + if(CollectionUtils.nullSafeIsEmpty(updateInput.getRecords())) { LOG.info("Update request called with 0 records. Returning with no-op"); rs.setRecords(new ArrayList<>()); return (rs); } - QTableMetaData table = updateRequest.getTable(); + QTableMetaData table = updateInput.getTable(); Instant now = Instant.now(); List outputRecords = new ArrayList<>(); @@ -86,7 +86,7 @@ public class RDBMSUpdateAction extends AbstractRDBMSAction implements UpdateInte // record. So, we will first "hash" up the records by their list of fields being updated. // ///////////////////////////////////////////////////////////////////////////////////////////// ListingHash, QRecord> recordsByFieldBeingUpdated = new ListingHash<>(); - for(QRecord record : updateRequest.getRecords()) + for(QRecord record : updateInput.getRecords()) { //////////////////////////////////////////// // todo .. better (not a hard-coded name) // @@ -112,7 +112,7 @@ public class RDBMSUpdateAction extends AbstractRDBMSAction implements UpdateInte outputRecords.add(outputRecord); } - try(Connection connection = getConnection(updateRequest)) + try(Connection connection = getConnection(updateInput)) { ///////////////////////////////////////////////////////////////////////////////////////////// // process each distinct list of fields being updated (e.g., each different SQL statement) // diff --git a/src/main/java/com/kingsrook/qqq/backend/module/rdbms/model/metadata/RDBMSTableBackendDetails.java b/src/main/java/com/kingsrook/qqq/backend/module/rdbms/model/metadata/RDBMSTableBackendDetails.java index 67c4b155..61deac38 100644 --- a/src/main/java/com/kingsrook/qqq/backend/module/rdbms/model/metadata/RDBMSTableBackendDetails.java +++ b/src/main/java/com/kingsrook/qqq/backend/module/rdbms/model/metadata/RDBMSTableBackendDetails.java @@ -22,7 +22,7 @@ package com.kingsrook.qqq.backend.module.rdbms.model.metadata; -import com.kingsrook.qqq.backend.core.model.metadata.QTableBackendDetails; +import com.kingsrook.qqq.backend.core.model.metadata.tables.QTableBackendDetails; import com.kingsrook.qqq.backend.module.rdbms.RDBMSBackendModule; diff --git a/src/test/java/com/kingsrook/qqq/backend/module/rdbms/TestUtils.java b/src/test/java/com/kingsrook/qqq/backend/module/rdbms/TestUtils.java index 2953addc..7b6a1e45 100644 --- a/src/test/java/com/kingsrook/qqq/backend/module/rdbms/TestUtils.java +++ b/src/test/java/com/kingsrook/qqq/backend/module/rdbms/TestUtils.java @@ -22,10 +22,10 @@ package com.kingsrook.qqq.backend.module.rdbms; -import com.kingsrook.qqq.backend.core.model.metadata.QFieldMetaData; -import com.kingsrook.qqq.backend.core.model.metadata.QFieldType; +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.QInstance; -import com.kingsrook.qqq.backend.core.model.metadata.QTableMetaData; +import com.kingsrook.qqq.backend.core.model.metadata.tables.QTableMetaData; import com.kingsrook.qqq.backend.module.rdbms.model.metadata.RDBMSBackendMetaData; import com.kingsrook.qqq.backend.module.rdbms.model.metadata.RDBMSTableBackendDetails; diff --git a/src/test/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSCountActionTest.java b/src/test/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSCountActionTest.java index 62869e7e..02de11c1 100644 --- a/src/test/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSCountActionTest.java +++ b/src/test/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSCountActionTest.java @@ -24,11 +24,11 @@ package com.kingsrook.qqq.backend.module.rdbms.actions; import java.util.List; import com.kingsrook.qqq.backend.core.exceptions.QException; -import com.kingsrook.qqq.backend.core.model.actions.count.CountRequest; -import com.kingsrook.qqq.backend.core.model.actions.count.CountResult; -import com.kingsrook.qqq.backend.core.model.actions.query.QCriteriaOperator; -import com.kingsrook.qqq.backend.core.model.actions.query.QFilterCriteria; -import com.kingsrook.qqq.backend.core.model.actions.query.QQueryFilter; +import com.kingsrook.qqq.backend.core.model.actions.tables.count.CountInput; +import com.kingsrook.qqq.backend.core.model.actions.tables.count.CountOutput; +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.module.rdbms.TestUtils; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; @@ -58,9 +58,9 @@ public class RDBMSCountActionTest extends RDBMSActionTest @Test public void testUnfilteredCount() throws QException { - CountRequest countRequest = initCountRequest(); - CountResult countResult = new RDBMSCountAction().execute(countRequest); - Assertions.assertEquals(5, countResult.getCount(), "Unfiltered query should find all rows"); + CountInput countInput = initCountRequest(); + CountOutput countOutput = new RDBMSCountAction().execute(countInput); + Assertions.assertEquals(5, countOutput.getCount(), "Unfiltered query should find all rows"); } @@ -73,15 +73,15 @@ public class RDBMSCountActionTest extends RDBMSActionTest { String email = "darin.kelkhoff@gmail.com"; - CountRequest countRequest = initCountRequest(); - countRequest.setFilter(new QQueryFilter() + CountInput countInput = initCountRequest(); + countInput.setFilter(new QQueryFilter() .withCriteria(new QFilterCriteria() .withFieldName("email") .withOperator(QCriteriaOperator.EQUALS) .withValues(List.of(email))) ); - CountResult countResult = new RDBMSCountAction().execute(countRequest); - Assertions.assertEquals(1, countResult.getCount(), "Expected # of rows"); + CountOutput countOutput = new RDBMSCountAction().execute(countInput); + Assertions.assertEquals(1, countOutput.getCount(), "Expected # of rows"); } @@ -94,15 +94,15 @@ public class RDBMSCountActionTest extends RDBMSActionTest { String email = "darin.kelkhoff@gmail.com"; - CountRequest countRequest = initCountRequest(); - countRequest.setFilter(new QQueryFilter() + CountInput countInput = initCountRequest(); + countInput.setFilter(new QQueryFilter() .withCriteria(new QFilterCriteria() .withFieldName("email") .withOperator(QCriteriaOperator.NOT_EQUALS) .withValues(List.of(email))) ); - CountResult countResult = new RDBMSCountAction().execute(countRequest); - Assertions.assertEquals(4, countResult.getCount(), "Expected # of rows"); + CountOutput countOutput = new RDBMSCountAction().execute(countInput); + Assertions.assertEquals(4, countOutput.getCount(), "Expected # of rows"); } @@ -110,12 +110,12 @@ public class RDBMSCountActionTest extends RDBMSActionTest /******************************************************************************* ** *******************************************************************************/ - private CountRequest initCountRequest() + private CountInput initCountRequest() { - CountRequest countRequest = new CountRequest(); - countRequest.setInstance(TestUtils.defineInstance()); - countRequest.setTableName(TestUtils.defineTablePerson().getName()); - return countRequest; + CountInput countInput = new CountInput(); + countInput.setInstance(TestUtils.defineInstance()); + countInput.setTableName(TestUtils.defineTablePerson().getName()); + return countInput; } } \ No newline at end of file diff --git a/src/test/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSDeleteActionTest.java b/src/test/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSDeleteActionTest.java index 8547040c..c8bd95f5 100644 --- a/src/test/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSDeleteActionTest.java +++ b/src/test/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSDeleteActionTest.java @@ -23,8 +23,8 @@ package com.kingsrook.qqq.backend.module.rdbms.actions; import java.util.List; -import com.kingsrook.qqq.backend.core.model.actions.delete.DeleteRequest; -import com.kingsrook.qqq.backend.core.model.actions.delete.DeleteResult; +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.module.rdbms.TestUtils; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -56,9 +56,9 @@ public class RDBMSDeleteActionTest extends RDBMSActionTest @Test public void testDeleteAll() throws Exception { - DeleteRequest deleteRequest = initDeleteRequest(); - deleteRequest.setPrimaryKeys(List.of(1, 2, 3, 4, 5)); - DeleteResult deleteResult = new RDBMSDeleteAction().execute(deleteRequest); + DeleteInput deleteInput = initDeleteRequest(); + deleteInput.setPrimaryKeys(List.of(1, 2, 3, 4, 5)); + DeleteOutput deleteResult = new RDBMSDeleteAction().execute(deleteInput); assertEquals(5, deleteResult.getRecords().size(), "Unfiltered delete should return all rows"); // todo - add errors to QRecord? assertTrue(deleteResult.getRecords().stream().noneMatch(qrs -> CollectionUtils.nullSafeHasContents(qrs.getErrors())), "There should be no errors"); runTestSql("SELECT id FROM person", (rs -> assertFalse(rs.next()))); @@ -72,9 +72,9 @@ public class RDBMSDeleteActionTest extends RDBMSActionTest @Test public void testDeleteOne() throws Exception { - DeleteRequest deleteRequest = initDeleteRequest(); - deleteRequest.setPrimaryKeys(List.of(1)); - DeleteResult deleteResult = new RDBMSDeleteAction().execute(deleteRequest); + DeleteInput deleteInput = initDeleteRequest(); + deleteInput.setPrimaryKeys(List.of(1)); + DeleteOutput deleteResult = new RDBMSDeleteAction().execute(deleteInput); assertEquals(1, deleteResult.getRecords().size(), "Should delete one row"); // todo - add errors to QRecord? assertTrue(deleteResult.getRecords().stream().noneMatch(qrs -> CollectionUtils.nullSafeHasContents(qrs.getErrors())), "There should be no errors"); runTestSql("SELECT id FROM person WHERE id = 1", (rs -> assertFalse(rs.next()))); @@ -88,9 +88,9 @@ public class RDBMSDeleteActionTest extends RDBMSActionTest @Test public void testDeleteSome() throws Exception { - DeleteRequest deleteRequest = initDeleteRequest(); - deleteRequest.setPrimaryKeys(List.of(1, 3, 5)); - DeleteResult deleteResult = new RDBMSDeleteAction().execute(deleteRequest); + DeleteInput deleteInput = initDeleteRequest(); + deleteInput.setPrimaryKeys(List.of(1, 3, 5)); + DeleteOutput deleteResult = new RDBMSDeleteAction().execute(deleteInput); assertEquals(3, deleteResult.getRecords().size(), "Should delete one row"); // todo - add errors to QRecord? assertTrue(deleteResult.getRecords().stream().noneMatch(qrs -> CollectionUtils.nullSafeHasContents(qrs.getErrors())), "There should be no errors"); runTestSql("SELECT id FROM person", (rs -> { @@ -110,12 +110,12 @@ public class RDBMSDeleteActionTest extends RDBMSActionTest /******************************************************************************* ** *******************************************************************************/ - private DeleteRequest initDeleteRequest() + private DeleteInput initDeleteRequest() { - DeleteRequest deleteRequest = new DeleteRequest(); - deleteRequest.setInstance(TestUtils.defineInstance()); - deleteRequest.setTableName(TestUtils.defineTablePerson().getName()); - return deleteRequest; + DeleteInput deleteInput = new DeleteInput(); + deleteInput.setInstance(TestUtils.defineInstance()); + deleteInput.setTableName(TestUtils.defineTablePerson().getName()); + return deleteInput; } } \ No newline at end of file diff --git a/src/test/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSInsertActionTest.java b/src/test/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSInsertActionTest.java index 386af624..f55fc550 100644 --- a/src/test/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSInsertActionTest.java +++ b/src/test/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSInsertActionTest.java @@ -25,8 +25,8 @@ package com.kingsrook.qqq.backend.module.rdbms.actions; import java.util.Collections; import java.util.List; import com.kingsrook.qqq.backend.core.exceptions.QException; -import com.kingsrook.qqq.backend.core.model.actions.insert.InsertRequest; -import com.kingsrook.qqq.backend.core.model.actions.insert.InsertResult; +import com.kingsrook.qqq.backend.core.model.actions.tables.insert.InsertInput; +import com.kingsrook.qqq.backend.core.model.actions.tables.insert.InsertOutput; import com.kingsrook.qqq.backend.core.model.data.QRecord; import com.kingsrook.qqq.backend.module.rdbms.TestUtils; import org.junit.jupiter.api.BeforeEach; @@ -58,10 +58,10 @@ public class RDBMSInsertActionTest extends RDBMSActionTest @Test public void testInsertNullList() throws QException { - InsertRequest insertRequest = initInsertRequest(); - insertRequest.setRecords(null); - InsertResult insertResult = new RDBMSInsertAction().execute(insertRequest); - assertEquals(0, insertResult.getRecords().size()); + InsertInput insertInput = initInsertRequest(); + insertInput.setRecords(null); + InsertOutput insertOutput = new RDBMSInsertAction().execute(insertInput); + assertEquals(0, insertOutput.getRecords().size()); } @@ -72,10 +72,10 @@ public class RDBMSInsertActionTest extends RDBMSActionTest @Test public void testInsertEmptyList() throws QException { - InsertRequest insertRequest = initInsertRequest(); - insertRequest.setRecords(Collections.emptyList()); - InsertResult insertResult = new RDBMSInsertAction().execute(insertRequest); - assertEquals(0, insertResult.getRecords().size()); + InsertInput insertInput = initInsertRequest(); + insertInput.setRecords(Collections.emptyList()); + InsertOutput insertOutput = new RDBMSInsertAction().execute(insertInput); + assertEquals(0, insertOutput.getRecords().size()); } @@ -86,16 +86,16 @@ public class RDBMSInsertActionTest extends RDBMSActionTest @Test public void testInsertOne() throws Exception { - InsertRequest insertRequest = initInsertRequest(); + InsertInput insertInput = initInsertRequest(); QRecord record = new QRecord().withTableName("person") .withValue("firstName", "James") .withValue("lastName", "Kirk") .withValue("email", "jamestk@starfleet.net") .withValue("birthDate", "2210-05-20"); - insertRequest.setRecords(List.of(record)); - InsertResult insertResult = new RDBMSInsertAction().execute(insertRequest); - assertEquals(1, insertResult.getRecords().size(), "Should return 1 row"); - assertNotNull(insertResult.getRecords().get(0).getValue("id"), "Should have an id in the row"); + insertInput.setRecords(List.of(record)); + InsertOutput insertOutput = new RDBMSInsertAction().execute(insertInput); + assertEquals(1, insertOutput.getRecords().size(), "Should return 1 row"); + assertNotNull(insertOutput.getRecords().get(0).getValue("id"), "Should have an id in the row"); // todo - add errors to QRecord? assertTrue(insertResult.getRecords().stream().noneMatch(qrs -> CollectionUtils.nullSafeHasContents(qrs.getErrors())), "There should be no errors"); runTestSql("SELECT * FROM person WHERE last_name = 'Kirk'", (rs -> { int rowsFound = 0; @@ -118,7 +118,7 @@ public class RDBMSInsertActionTest extends RDBMSActionTest @Test public void testInsertMany() throws Exception { - InsertRequest insertRequest = initInsertRequest(); + InsertInput insertInput = initInsertRequest(); QRecord record1 = new QRecord().withTableName("person") .withValue("firstName", "Jean-Luc") .withValue("lastName", "Picard") @@ -129,11 +129,11 @@ public class RDBMSInsertActionTest extends RDBMSActionTest .withValue("lastName", "Riker") .withValue("email", "notthomas@starfleet.net") .withValue("birthDate", "2320-05-20"); - insertRequest.setRecords(List.of(record1, record2)); - InsertResult insertResult = new RDBMSInsertAction().execute(insertRequest); - assertEquals(2, insertResult.getRecords().size(), "Should return 1 row"); - assertEquals(6, insertResult.getRecords().get(0).getValue("id"), "Should have next id in the row"); - assertEquals(7, insertResult.getRecords().get(1).getValue("id"), "Should have next id in the row"); + insertInput.setRecords(List.of(record1, record2)); + InsertOutput insertOutput = new RDBMSInsertAction().execute(insertInput); + assertEquals(2, insertOutput.getRecords().size(), "Should return 1 row"); + assertEquals(6, insertOutput.getRecords().get(0).getValue("id"), "Should have next id in the row"); + assertEquals(7, insertOutput.getRecords().get(1).getValue("id"), "Should have next id in the row"); // todo - add errors to QRecord? assertTrue(insertResult.getRecords().stream().noneMatch(qrs -> CollectionUtils.nullSafeHasContents(qrs.getErrors())), "There should be no errors"); runTestSql("SELECT * FROM person WHERE last_name = 'Picard'", (rs -> { int rowsFound = 0; @@ -162,12 +162,12 @@ public class RDBMSInsertActionTest extends RDBMSActionTest /******************************************************************************* ** *******************************************************************************/ - private InsertRequest initInsertRequest() + private InsertInput initInsertRequest() { - InsertRequest insertRequest = new InsertRequest(); - insertRequest.setInstance(TestUtils.defineInstance()); - insertRequest.setTableName(TestUtils.defineTablePerson().getName()); - return insertRequest; + InsertInput insertInput = new InsertInput(); + insertInput.setInstance(TestUtils.defineInstance()); + insertInput.setTableName(TestUtils.defineTablePerson().getName()); + return insertInput; } } \ No newline at end of file diff --git a/src/test/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSQueryActionTest.java b/src/test/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSQueryActionTest.java index 0067b59a..5e53c0f2 100644 --- a/src/test/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSQueryActionTest.java +++ b/src/test/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSQueryActionTest.java @@ -24,11 +24,11 @@ package com.kingsrook.qqq.backend.module.rdbms.actions; import java.util.List; import com.kingsrook.qqq.backend.core.exceptions.QException; -import com.kingsrook.qqq.backend.core.model.actions.query.QCriteriaOperator; -import com.kingsrook.qqq.backend.core.model.actions.query.QFilterCriteria; -import com.kingsrook.qqq.backend.core.model.actions.query.QQueryFilter; -import com.kingsrook.qqq.backend.core.model.actions.query.QueryRequest; -import com.kingsrook.qqq.backend.core.model.actions.query.QueryResult; +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.module.rdbms.TestUtils; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; @@ -58,9 +58,9 @@ public class RDBMSQueryActionTest extends RDBMSActionTest @Test public void testUnfilteredQuery() throws QException { - QueryRequest queryRequest = initQueryRequest(); - QueryResult queryResult = new RDBMSQueryAction().execute(queryRequest); - Assertions.assertEquals(5, queryResult.getRecords().size(), "Unfiltered query should find all rows"); + QueryInput queryInput = initQueryRequest(); + QueryOutput queryOutput = new RDBMSQueryAction().execute(queryInput); + Assertions.assertEquals(5, queryOutput.getRecords().size(), "Unfiltered query should find all rows"); } @@ -73,16 +73,16 @@ public class RDBMSQueryActionTest extends RDBMSActionTest { String email = "darin.kelkhoff@gmail.com"; - QueryRequest queryRequest = initQueryRequest(); - queryRequest.setFilter(new QQueryFilter() + QueryInput queryInput = initQueryRequest(); + queryInput.setFilter(new QQueryFilter() .withCriteria(new QFilterCriteria() .withFieldName("email") .withOperator(QCriteriaOperator.EQUALS) .withValues(List.of(email))) ); - QueryResult queryResult = new RDBMSQueryAction().execute(queryRequest); - Assertions.assertEquals(1, queryResult.getRecords().size(), "Expected # of rows"); - Assertions.assertEquals(email, queryResult.getRecords().get(0).getValueString("email"), "Should find expected email address"); + QueryOutput queryOutput = new RDBMSQueryAction().execute(queryInput); + Assertions.assertEquals(1, queryOutput.getRecords().size(), "Expected # of rows"); + Assertions.assertEquals(email, queryOutput.getRecords().get(0).getValueString("email"), "Should find expected email address"); } @@ -95,16 +95,16 @@ public class RDBMSQueryActionTest extends RDBMSActionTest { String email = "darin.kelkhoff@gmail.com"; - QueryRequest queryRequest = initQueryRequest(); - queryRequest.setFilter(new QQueryFilter() + QueryInput queryInput = initQueryRequest(); + queryInput.setFilter(new QQueryFilter() .withCriteria(new QFilterCriteria() .withFieldName("email") .withOperator(QCriteriaOperator.NOT_EQUALS) .withValues(List.of(email))) ); - QueryResult queryResult = new RDBMSQueryAction().execute(queryRequest); - Assertions.assertEquals(4, queryResult.getRecords().size(), "Expected # of rows"); - Assertions.assertTrue(queryResult.getRecords().stream().noneMatch(r -> r.getValueString("email").equals(email)), "Should NOT find expected email address"); + QueryOutput queryOutput = new RDBMSQueryAction().execute(queryInput); + Assertions.assertEquals(4, queryOutput.getRecords().size(), "Expected # of rows"); + Assertions.assertTrue(queryOutput.getRecords().stream().noneMatch(r -> r.getValueString("email").equals(email)), "Should NOT find expected email address"); } @@ -115,16 +115,16 @@ public class RDBMSQueryActionTest extends RDBMSActionTest @Test public void testInQuery() throws QException { - QueryRequest queryRequest = initQueryRequest(); - queryRequest.setFilter(new QQueryFilter() + QueryInput queryInput = initQueryRequest(); + queryInput.setFilter(new QQueryFilter() .withCriteria(new QFilterCriteria() .withFieldName("id") .withOperator(QCriteriaOperator.IN) .withValues(List.of(2, 4))) ); - QueryResult queryResult = new RDBMSQueryAction().execute(queryRequest); - Assertions.assertEquals(2, queryResult.getRecords().size(), "Expected # of rows"); - Assertions.assertTrue(queryResult.getRecords().stream().allMatch(r -> r.getValueInteger("id").equals(2) || r.getValueInteger("id").equals(4)), "Should find expected ids"); + QueryOutput queryOutput = new RDBMSQueryAction().execute(queryInput); + Assertions.assertEquals(2, queryOutput.getRecords().size(), "Expected # of rows"); + Assertions.assertTrue(queryOutput.getRecords().stream().allMatch(r -> r.getValueInteger("id").equals(2) || r.getValueInteger("id").equals(4)), "Should find expected ids"); } @@ -135,16 +135,16 @@ public class RDBMSQueryActionTest extends RDBMSActionTest @Test public void testNotInQuery() throws QException { - QueryRequest queryRequest = initQueryRequest(); - queryRequest.setFilter(new QQueryFilter() + QueryInput queryInput = initQueryRequest(); + queryInput.setFilter(new QQueryFilter() .withCriteria(new QFilterCriteria() .withFieldName("id") .withOperator(QCriteriaOperator.NOT_IN) .withValues(List.of(2, 3, 4))) ); - QueryResult queryResult = new RDBMSQueryAction().execute(queryRequest); - Assertions.assertEquals(2, queryResult.getRecords().size(), "Expected # of rows"); - Assertions.assertTrue(queryResult.getRecords().stream().allMatch(r -> r.getValueInteger("id").equals(1) || r.getValueInteger("id").equals(5)), "Should find expected ids"); + QueryOutput queryOutput = new RDBMSQueryAction().execute(queryInput); + Assertions.assertEquals(2, queryOutput.getRecords().size(), "Expected # of rows"); + Assertions.assertTrue(queryOutput.getRecords().stream().allMatch(r -> r.getValueInteger("id").equals(1) || r.getValueInteger("id").equals(5)), "Should find expected ids"); } @@ -155,16 +155,16 @@ public class RDBMSQueryActionTest extends RDBMSActionTest @Test public void testStartsWith() throws QException { - QueryRequest queryRequest = initQueryRequest(); - queryRequest.setFilter(new QQueryFilter() + QueryInput queryInput = initQueryRequest(); + queryInput.setFilter(new QQueryFilter() .withCriteria(new QFilterCriteria() .withFieldName("email") .withOperator(QCriteriaOperator.STARTS_WITH) .withValues(List.of("darin"))) ); - QueryResult queryResult = new RDBMSQueryAction().execute(queryRequest); - Assertions.assertEquals(1, queryResult.getRecords().size(), "Expected # of rows"); - Assertions.assertTrue(queryResult.getRecords().stream().allMatch(r -> r.getValueString("email").matches("darin.*")), "Should find matching email address"); + QueryOutput queryOutput = new RDBMSQueryAction().execute(queryInput); + Assertions.assertEquals(1, queryOutput.getRecords().size(), "Expected # of rows"); + Assertions.assertTrue(queryOutput.getRecords().stream().allMatch(r -> r.getValueString("email").matches("darin.*")), "Should find matching email address"); } @@ -175,16 +175,16 @@ public class RDBMSQueryActionTest extends RDBMSActionTest @Test public void testContains() throws QException { - QueryRequest queryRequest = initQueryRequest(); - queryRequest.setFilter(new QQueryFilter() + QueryInput queryInput = initQueryRequest(); + queryInput.setFilter(new QQueryFilter() .withCriteria(new QFilterCriteria() .withFieldName("email") .withOperator(QCriteriaOperator.CONTAINS) .withValues(List.of("kelkhoff"))) ); - QueryResult queryResult = new RDBMSQueryAction().execute(queryRequest); - Assertions.assertEquals(1, queryResult.getRecords().size(), "Expected # of rows"); - Assertions.assertTrue(queryResult.getRecords().stream().allMatch(r -> r.getValueString("email").matches(".*kelkhoff.*")), "Should find matching email address"); + QueryOutput queryOutput = new RDBMSQueryAction().execute(queryInput); + Assertions.assertEquals(1, queryOutput.getRecords().size(), "Expected # of rows"); + Assertions.assertTrue(queryOutput.getRecords().stream().allMatch(r -> r.getValueString("email").matches(".*kelkhoff.*")), "Should find matching email address"); } @@ -195,16 +195,16 @@ public class RDBMSQueryActionTest extends RDBMSActionTest @Test public void testEndsWith() throws QException { - QueryRequest queryRequest = initQueryRequest(); - queryRequest.setFilter(new QQueryFilter() + QueryInput queryInput = initQueryRequest(); + queryInput.setFilter(new QQueryFilter() .withCriteria(new QFilterCriteria() .withFieldName("email") .withOperator(QCriteriaOperator.ENDS_WITH) .withValues(List.of("gmail.com"))) ); - QueryResult queryResult = new RDBMSQueryAction().execute(queryRequest); - Assertions.assertEquals(1, queryResult.getRecords().size(), "Expected # of rows"); - Assertions.assertTrue(queryResult.getRecords().stream().allMatch(r -> r.getValueString("email").matches(".*gmail.com")), "Should find matching email address"); + QueryOutput queryOutput = new RDBMSQueryAction().execute(queryInput); + Assertions.assertEquals(1, queryOutput.getRecords().size(), "Expected # of rows"); + Assertions.assertTrue(queryOutput.getRecords().stream().allMatch(r -> r.getValueString("email").matches(".*gmail.com")), "Should find matching email address"); } @@ -215,16 +215,16 @@ public class RDBMSQueryActionTest extends RDBMSActionTest @Test public void testNotStartsWith() throws QException { - QueryRequest queryRequest = initQueryRequest(); - queryRequest.setFilter(new QQueryFilter() + QueryInput queryInput = initQueryRequest(); + queryInput.setFilter(new QQueryFilter() .withCriteria(new QFilterCriteria() .withFieldName("email") .withOperator(QCriteriaOperator.NOT_STARTS_WITH) .withValues(List.of("darin"))) ); - QueryResult queryResult = new RDBMSQueryAction().execute(queryRequest); - Assertions.assertEquals(4, queryResult.getRecords().size(), "Expected # of rows"); - Assertions.assertTrue(queryResult.getRecords().stream().noneMatch(r -> r.getValueString("email").matches("darin.*")), "Should find matching email address"); + QueryOutput queryOutput = new RDBMSQueryAction().execute(queryInput); + Assertions.assertEquals(4, queryOutput.getRecords().size(), "Expected # of rows"); + Assertions.assertTrue(queryOutput.getRecords().stream().noneMatch(r -> r.getValueString("email").matches("darin.*")), "Should find matching email address"); } @@ -235,16 +235,16 @@ public class RDBMSQueryActionTest extends RDBMSActionTest @Test public void testNotContains() throws QException { - QueryRequest queryRequest = initQueryRequest(); - queryRequest.setFilter(new QQueryFilter() + QueryInput queryInput = initQueryRequest(); + queryInput.setFilter(new QQueryFilter() .withCriteria(new QFilterCriteria() .withFieldName("email") .withOperator(QCriteriaOperator.NOT_CONTAINS) .withValues(List.of("kelkhoff"))) ); - QueryResult queryResult = new RDBMSQueryAction().execute(queryRequest); - Assertions.assertEquals(4, queryResult.getRecords().size(), "Expected # of rows"); - Assertions.assertTrue(queryResult.getRecords().stream().noneMatch(r -> r.getValueString("email").matches(".*kelkhoff.*")), "Should find matching email address"); + QueryOutput queryOutput = new RDBMSQueryAction().execute(queryInput); + Assertions.assertEquals(4, queryOutput.getRecords().size(), "Expected # of rows"); + Assertions.assertTrue(queryOutput.getRecords().stream().noneMatch(r -> r.getValueString("email").matches(".*kelkhoff.*")), "Should find matching email address"); } @@ -255,16 +255,16 @@ public class RDBMSQueryActionTest extends RDBMSActionTest @Test public void testNotEndsWith() throws QException { - QueryRequest queryRequest = initQueryRequest(); - queryRequest.setFilter(new QQueryFilter() + QueryInput queryInput = initQueryRequest(); + queryInput.setFilter(new QQueryFilter() .withCriteria(new QFilterCriteria() .withFieldName("email") .withOperator(QCriteriaOperator.NOT_ENDS_WITH) .withValues(List.of("gmail.com"))) ); - QueryResult queryResult = new RDBMSQueryAction().execute(queryRequest); - Assertions.assertEquals(4, queryResult.getRecords().size(), "Expected # of rows"); - Assertions.assertTrue(queryResult.getRecords().stream().noneMatch(r -> r.getValueString("email").matches(".*gmail.com")), "Should find matching email address"); + QueryOutput queryOutput = new RDBMSQueryAction().execute(queryInput); + Assertions.assertEquals(4, queryOutput.getRecords().size(), "Expected # of rows"); + Assertions.assertTrue(queryOutput.getRecords().stream().noneMatch(r -> r.getValueString("email").matches(".*gmail.com")), "Should find matching email address"); } @@ -275,16 +275,16 @@ public class RDBMSQueryActionTest extends RDBMSActionTest @Test public void testLessThanQuery() throws QException { - QueryRequest queryRequest = initQueryRequest(); - queryRequest.setFilter(new QQueryFilter() + QueryInput queryInput = initQueryRequest(); + queryInput.setFilter(new QQueryFilter() .withCriteria(new QFilterCriteria() .withFieldName("id") .withOperator(QCriteriaOperator.LESS_THAN) .withValues(List.of(3))) ); - QueryResult queryResult = new RDBMSQueryAction().execute(queryRequest); - Assertions.assertEquals(2, queryResult.getRecords().size(), "Expected # of rows"); - Assertions.assertTrue(queryResult.getRecords().stream().allMatch(r -> r.getValueInteger("id").equals(1) || r.getValueInteger("id").equals(2)), "Should find expected ids"); + QueryOutput queryOutput = new RDBMSQueryAction().execute(queryInput); + Assertions.assertEquals(2, queryOutput.getRecords().size(), "Expected # of rows"); + Assertions.assertTrue(queryOutput.getRecords().stream().allMatch(r -> r.getValueInteger("id").equals(1) || r.getValueInteger("id").equals(2)), "Should find expected ids"); } @@ -295,16 +295,16 @@ public class RDBMSQueryActionTest extends RDBMSActionTest @Test public void testLessThanOrEqualsQuery() throws QException { - QueryRequest queryRequest = initQueryRequest(); - queryRequest.setFilter(new QQueryFilter() + QueryInput queryInput = initQueryRequest(); + queryInput.setFilter(new QQueryFilter() .withCriteria(new QFilterCriteria() .withFieldName("id") .withOperator(QCriteriaOperator.LESS_THAN_OR_EQUALS) .withValues(List.of(2))) ); - QueryResult queryResult = new RDBMSQueryAction().execute(queryRequest); - Assertions.assertEquals(2, queryResult.getRecords().size(), "Expected # of rows"); - Assertions.assertTrue(queryResult.getRecords().stream().allMatch(r -> r.getValueInteger("id").equals(1) || r.getValueInteger("id").equals(2)), "Should find expected ids"); + QueryOutput queryOutput = new RDBMSQueryAction().execute(queryInput); + Assertions.assertEquals(2, queryOutput.getRecords().size(), "Expected # of rows"); + Assertions.assertTrue(queryOutput.getRecords().stream().allMatch(r -> r.getValueInteger("id").equals(1) || r.getValueInteger("id").equals(2)), "Should find expected ids"); } @@ -315,16 +315,16 @@ public class RDBMSQueryActionTest extends RDBMSActionTest @Test public void testGreaterThanQuery() throws QException { - QueryRequest queryRequest = initQueryRequest(); - queryRequest.setFilter(new QQueryFilter() + QueryInput queryInput = initQueryRequest(); + queryInput.setFilter(new QQueryFilter() .withCriteria(new QFilterCriteria() .withFieldName("id") .withOperator(QCriteriaOperator.GREATER_THAN) .withValues(List.of(3))) ); - QueryResult queryResult = new RDBMSQueryAction().execute(queryRequest); - Assertions.assertEquals(2, queryResult.getRecords().size(), "Expected # of rows"); - Assertions.assertTrue(queryResult.getRecords().stream().allMatch(r -> r.getValueInteger("id").equals(4) || r.getValueInteger("id").equals(5)), "Should find expected ids"); + QueryOutput queryOutput = new RDBMSQueryAction().execute(queryInput); + Assertions.assertEquals(2, queryOutput.getRecords().size(), "Expected # of rows"); + Assertions.assertTrue(queryOutput.getRecords().stream().allMatch(r -> r.getValueInteger("id").equals(4) || r.getValueInteger("id").equals(5)), "Should find expected ids"); } @@ -335,16 +335,16 @@ public class RDBMSQueryActionTest extends RDBMSActionTest @Test public void testGreaterThanOrEqualsQuery() throws QException { - QueryRequest queryRequest = initQueryRequest(); - queryRequest.setFilter(new QQueryFilter() + QueryInput queryInput = initQueryRequest(); + queryInput.setFilter(new QQueryFilter() .withCriteria(new QFilterCriteria() .withFieldName("id") .withOperator(QCriteriaOperator.GREATER_THAN_OR_EQUALS) .withValues(List.of(4))) ); - QueryResult queryResult = new RDBMSQueryAction().execute(queryRequest); - Assertions.assertEquals(2, queryResult.getRecords().size(), "Expected # of rows"); - Assertions.assertTrue(queryResult.getRecords().stream().allMatch(r -> r.getValueInteger("id").equals(4) || r.getValueInteger("id").equals(5)), "Should find expected ids"); + QueryOutput queryOutput = new RDBMSQueryAction().execute(queryInput); + Assertions.assertEquals(2, queryOutput.getRecords().size(), "Expected # of rows"); + Assertions.assertTrue(queryOutput.getRecords().stream().allMatch(r -> r.getValueInteger("id").equals(4) || r.getValueInteger("id").equals(5)), "Should find expected ids"); } @@ -355,15 +355,15 @@ public class RDBMSQueryActionTest extends RDBMSActionTest @Test public void testIsBlankQuery() throws QException { - QueryRequest queryRequest = initQueryRequest(); - queryRequest.setFilter(new QQueryFilter() + QueryInput queryInput = initQueryRequest(); + queryInput.setFilter(new QQueryFilter() .withCriteria(new QFilterCriteria() .withFieldName("birthDate") .withOperator(QCriteriaOperator.IS_BLANK) )); - QueryResult queryResult = new RDBMSQueryAction().execute(queryRequest); - Assertions.assertEquals(1, queryResult.getRecords().size(), "Expected # of rows"); - Assertions.assertTrue(queryResult.getRecords().stream().allMatch(r -> r.getValue("birthDate") == null), "Should find expected row"); + QueryOutput queryOutput = new RDBMSQueryAction().execute(queryInput); + Assertions.assertEquals(1, queryOutput.getRecords().size(), "Expected # of rows"); + Assertions.assertTrue(queryOutput.getRecords().stream().allMatch(r -> r.getValue("birthDate") == null), "Should find expected row"); } @@ -374,16 +374,16 @@ public class RDBMSQueryActionTest extends RDBMSActionTest @Test public void testBetweenQuery() throws QException { - QueryRequest queryRequest = initQueryRequest(); - queryRequest.setFilter(new QQueryFilter() + QueryInput queryInput = initQueryRequest(); + queryInput.setFilter(new QQueryFilter() .withCriteria(new QFilterCriteria() .withFieldName("id") .withOperator(QCriteriaOperator.BETWEEN) .withValues(List.of(2, 4)) )); - QueryResult queryResult = new RDBMSQueryAction().execute(queryRequest); - Assertions.assertEquals(3, queryResult.getRecords().size(), "Expected # of rows"); - Assertions.assertTrue(queryResult.getRecords().stream().allMatch(r -> r.getValueInteger("id").equals(2) || r.getValueInteger("id").equals(3) || r.getValueInteger("id").equals(4)), "Should find expected ids"); + QueryOutput queryOutput = new RDBMSQueryAction().execute(queryInput); + Assertions.assertEquals(3, queryOutput.getRecords().size(), "Expected # of rows"); + Assertions.assertTrue(queryOutput.getRecords().stream().allMatch(r -> r.getValueInteger("id").equals(2) || r.getValueInteger("id").equals(3) || r.getValueInteger("id").equals(4)), "Should find expected ids"); } @@ -394,16 +394,16 @@ public class RDBMSQueryActionTest extends RDBMSActionTest @Test public void testNotBetweenQuery() throws QException { - QueryRequest queryRequest = initQueryRequest(); - queryRequest.setFilter(new QQueryFilter() + QueryInput queryInput = initQueryRequest(); + queryInput.setFilter(new QQueryFilter() .withCriteria(new QFilterCriteria() .withFieldName("id") .withOperator(QCriteriaOperator.NOT_BETWEEN) .withValues(List.of(2, 4)) )); - QueryResult queryResult = new RDBMSQueryAction().execute(queryRequest); - Assertions.assertEquals(2, queryResult.getRecords().size(), "Expected # of rows"); - Assertions.assertTrue(queryResult.getRecords().stream().allMatch(r -> r.getValueInteger("id").equals(1) || r.getValueInteger("id").equals(5)), "Should find expected ids"); + QueryOutput queryOutput = new RDBMSQueryAction().execute(queryInput); + Assertions.assertEquals(2, queryOutput.getRecords().size(), "Expected # of rows"); + Assertions.assertTrue(queryOutput.getRecords().stream().allMatch(r -> r.getValueInteger("id").equals(1) || r.getValueInteger("id").equals(5)), "Should find expected ids"); } @@ -411,12 +411,12 @@ public class RDBMSQueryActionTest extends RDBMSActionTest /******************************************************************************* ** *******************************************************************************/ - private QueryRequest initQueryRequest() + private QueryInput initQueryRequest() { - QueryRequest queryRequest = new QueryRequest(); - queryRequest.setInstance(TestUtils.defineInstance()); - queryRequest.setTableName(TestUtils.defineTablePerson().getName()); - return queryRequest; + QueryInput queryInput = new QueryInput(); + queryInput.setInstance(TestUtils.defineInstance()); + queryInput.setTableName(TestUtils.defineTablePerson().getName()); + return queryInput; } } \ No newline at end of file diff --git a/src/test/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSUpdateActionTest.java b/src/test/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSUpdateActionTest.java index 14114ddc..b71bb58d 100644 --- a/src/test/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSUpdateActionTest.java +++ b/src/test/java/com/kingsrook/qqq/backend/module/rdbms/actions/RDBMSUpdateActionTest.java @@ -27,8 +27,8 @@ import java.util.Collections; import java.util.List; import java.util.Map; import com.kingsrook.qqq.backend.core.exceptions.QException; -import com.kingsrook.qqq.backend.core.model.actions.update.UpdateRequest; -import com.kingsrook.qqq.backend.core.model.actions.update.UpdateResult; +import com.kingsrook.qqq.backend.core.model.actions.tables.update.UpdateInput; +import com.kingsrook.qqq.backend.core.model.actions.tables.update.UpdateOutput; import com.kingsrook.qqq.backend.core.model.data.QRecord; import com.kingsrook.qqq.backend.module.rdbms.TestUtils; import com.kingsrook.qqq.backend.module.rdbms.jdbc.QueryManager; @@ -77,9 +77,9 @@ public class RDBMSUpdateActionTest extends RDBMSActionTest @Test public void testUpdateNullList() throws QException { - UpdateRequest updateRequest = initUpdateRequest(); - updateRequest.setRecords(null); - UpdateResult updateResult = new RDBMSUpdateAction().execute(updateRequest); + UpdateInput updateInput = initUpdateRequest(); + updateInput.setRecords(null); + UpdateOutput updateResult = new RDBMSUpdateAction().execute(updateInput); assertEquals(0, updateResult.getRecords().size()); } @@ -91,10 +91,10 @@ public class RDBMSUpdateActionTest extends RDBMSActionTest @Test public void testUpdateEmptyList() throws QException { - UpdateRequest updateRequest = initUpdateRequest(); - updateRequest.setRecords(Collections.emptyList()); - new RDBMSUpdateAction().execute(updateRequest); - UpdateResult updateResult = new RDBMSUpdateAction().execute(updateRequest); + UpdateInput updateInput = initUpdateRequest(); + updateInput.setRecords(Collections.emptyList()); + new RDBMSUpdateAction().execute(updateInput); + UpdateOutput updateResult = new RDBMSUpdateAction().execute(updateInput); assertEquals(0, updateResult.getRecords().size()); } @@ -106,17 +106,17 @@ public class RDBMSUpdateActionTest extends RDBMSActionTest @Test public void testUpdateOne() throws Exception { - UpdateRequest updateRequest = initUpdateRequest(); + UpdateInput updateInput = initUpdateRequest(); QRecord record = new QRecord().withTableName("person") .withValue("id", 2) .withValue("firstName", "James") .withValue("lastName", "Kirk") .withValue("email", "jamestk@starfleet.net") .withValue("birthDate", "2210-05-20"); - updateRequest.setRecords(List.of(record)); + updateInput.setRecords(List.of(record)); - UpdateResult updateResult = new RDBMSUpdateAction().execute(updateRequest); - Map statistics = QueryManager.getStatistics(); + UpdateOutput updateResult = new RDBMSUpdateAction().execute(updateInput); + Map statistics = QueryManager.getStatistics(); assertEquals(1, statistics.get(QueryManager.STAT_QUERIES_RAN)); assertEquals(1, updateResult.getRecords().size(), "Should return 1 row"); @@ -149,7 +149,7 @@ public class RDBMSUpdateActionTest extends RDBMSActionTest @Test public void testUpdateManyWithDifferentColumnsAndValues() throws Exception { - UpdateRequest updateRequest = initUpdateRequest(); + UpdateInput updateInput = initUpdateRequest(); QRecord record1 = new QRecord().withTableName("person") .withValue("id", 1) .withValue("firstName", "Darren") @@ -166,9 +166,9 @@ public class RDBMSUpdateActionTest extends RDBMSActionTest .withValue("firstName", "Richard") .withValue("birthDate", null); - updateRequest.setRecords(List.of(record1, record2, record3)); + updateInput.setRecords(List.of(record1, record2, record3)); - UpdateResult updateResult = new RDBMSUpdateAction().execute(updateRequest); + UpdateOutput updateResult = new RDBMSUpdateAction().execute(updateInput); // this test runs one batch and one regular query Map statistics = QueryManager.getStatistics(); @@ -224,7 +224,7 @@ public class RDBMSUpdateActionTest extends RDBMSActionTest @Test public void testUpdateManyWithSameColumnsDifferentValues() throws Exception { - UpdateRequest updateRequest = initUpdateRequest(); + UpdateInput updateInput = initUpdateRequest(); QRecord record1 = new QRecord().withTableName("person") .withValue("id", 1) .withValue("firstName", "Darren") @@ -237,10 +237,10 @@ public class RDBMSUpdateActionTest extends RDBMSActionTest .withValue("lastName", "Tim's Uncle") .withValue("birthDate", null); - updateRequest.setRecords(List.of(record1, record2)); + updateInput.setRecords(List.of(record1, record2)); - UpdateResult updateResult = new RDBMSUpdateAction().execute(updateRequest); - Map statistics = QueryManager.getStatistics(); + UpdateOutput updateResult = new RDBMSUpdateAction().execute(updateInput); + Map statistics = QueryManager.getStatistics(); assertEquals(1, statistics.get(QueryManager.STAT_BATCHES_RAN)); assertEquals(2, updateResult.getRecords().size(), "Should return 2 rows"); @@ -281,8 +281,8 @@ public class RDBMSUpdateActionTest extends RDBMSActionTest @Test public void testUpdateManyWithSameColumnsSameValues() throws Exception { - UpdateRequest updateRequest = initUpdateRequest(); - List records = new ArrayList<>(); + UpdateInput updateInput = initUpdateRequest(); + List records = new ArrayList<>(); for(int i = 1; i <= 5; i++) { records.add(new QRecord().withTableName("person") @@ -290,10 +290,10 @@ public class RDBMSUpdateActionTest extends RDBMSActionTest .withValue("birthDate", "1999-09-09")); } - updateRequest.setRecords(records); + updateInput.setRecords(records); - UpdateResult updateResult = new RDBMSUpdateAction().execute(updateRequest); - Map statistics = QueryManager.getStatistics(); + UpdateOutput updateResult = new RDBMSUpdateAction().execute(updateInput); + Map statistics = QueryManager.getStatistics(); assertEquals(1, statistics.get(QueryManager.STAT_QUERIES_RAN)); assertEquals(5, updateResult.getRecords().size(), "Should return 5 rows"); @@ -314,12 +314,12 @@ public class RDBMSUpdateActionTest extends RDBMSActionTest /******************************************************************************* ** *******************************************************************************/ - private UpdateRequest initUpdateRequest() + private UpdateInput initUpdateRequest() { - UpdateRequest updateRequest = new UpdateRequest(); - updateRequest.setInstance(TestUtils.defineInstance()); - updateRequest.setTableName(TestUtils.defineTablePerson().getName()); - return updateRequest; + UpdateInput updateInput = new UpdateInput(); + updateInput.setInstance(TestUtils.defineInstance()); + updateInput.setTableName(TestUtils.defineTablePerson().getName()); + return updateInput; } } \ No newline at end of file diff --git a/src/test/resources/prime-test-database.sql b/src/test/resources/prime-test-database.sql index e27988b8..07ab6ac6 100644 --- a/src/test/resources/prime-test-database.sql +++ b/src/test/resources/prime-test-database.sql @@ -22,7 +22,7 @@ DROP TABLE IF EXISTS person; CREATE TABLE person ( - id INT AUTO_INCREMENT, + id INT AUTO_INCREMENT primary key , create_date TIMESTAMP DEFAULT now(), modify_date TIMESTAMP DEFAULT now(),