mirror of
https://github.com/Kingsrook/qqq.git
synced 2025-07-18 13:10:44 +00:00
QQQ-16 Removing QRecordWithStatus - moving those details into QRecord
This commit is contained in:
@ -24,7 +24,7 @@ package com.kingsrook.qqq.backend.core.model.actions.delete;
|
||||
|
||||
import java.util.List;
|
||||
import com.kingsrook.qqq.backend.core.model.actions.AbstractQResult;
|
||||
import com.kingsrook.qqq.backend.core.model.data.QRecordWithStatus;
|
||||
import com.kingsrook.qqq.backend.core.model.data.QRecord;
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
@ -33,14 +33,14 @@ import com.kingsrook.qqq.backend.core.model.data.QRecordWithStatus;
|
||||
*******************************************************************************/
|
||||
public class DeleteResult extends AbstractQResult
|
||||
{
|
||||
List<QRecordWithStatus> records;
|
||||
List<QRecord> records;
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
*******************************************************************************/
|
||||
public List<QRecordWithStatus> getRecords()
|
||||
public List<QRecord> getRecords()
|
||||
{
|
||||
return records;
|
||||
}
|
||||
@ -50,7 +50,7 @@ public class DeleteResult extends AbstractQResult
|
||||
/*******************************************************************************
|
||||
**
|
||||
*******************************************************************************/
|
||||
public void setRecords(List<QRecordWithStatus> records)
|
||||
public void setRecords(List<QRecord> records)
|
||||
{
|
||||
this.records = records;
|
||||
}
|
||||
|
@ -24,7 +24,7 @@ package com.kingsrook.qqq.backend.core.model.actions.insert;
|
||||
|
||||
import java.util.List;
|
||||
import com.kingsrook.qqq.backend.core.model.actions.AbstractQResult;
|
||||
import com.kingsrook.qqq.backend.core.model.data.QRecordWithStatus;
|
||||
import com.kingsrook.qqq.backend.core.model.data.QRecord;
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
@ -33,14 +33,14 @@ import com.kingsrook.qqq.backend.core.model.data.QRecordWithStatus;
|
||||
*******************************************************************************/
|
||||
public class InsertResult extends AbstractQResult
|
||||
{
|
||||
List<QRecordWithStatus> records;
|
||||
List<QRecord> records;
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
*******************************************************************************/
|
||||
public List<QRecordWithStatus> getRecords()
|
||||
public List<QRecord> getRecords()
|
||||
{
|
||||
return records;
|
||||
}
|
||||
@ -50,7 +50,7 @@ public class InsertResult extends AbstractQResult
|
||||
/*******************************************************************************
|
||||
**
|
||||
*******************************************************************************/
|
||||
public void setRecords(List<QRecordWithStatus> records)
|
||||
public void setRecords(List<QRecord> records)
|
||||
{
|
||||
this.records = records;
|
||||
}
|
||||
|
@ -24,7 +24,7 @@ package com.kingsrook.qqq.backend.core.model.actions.update;
|
||||
|
||||
import java.util.List;
|
||||
import com.kingsrook.qqq.backend.core.model.actions.AbstractQResult;
|
||||
import com.kingsrook.qqq.backend.core.model.data.QRecordWithStatus;
|
||||
import com.kingsrook.qqq.backend.core.model.data.QRecord;
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
@ -33,14 +33,14 @@ import com.kingsrook.qqq.backend.core.model.data.QRecordWithStatus;
|
||||
*******************************************************************************/
|
||||
public class UpdateResult extends AbstractQResult
|
||||
{
|
||||
List<QRecordWithStatus> records;
|
||||
List<QRecord> records;
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
*******************************************************************************/
|
||||
public List<QRecordWithStatus> getRecords()
|
||||
public List<QRecord> getRecords()
|
||||
{
|
||||
return records;
|
||||
}
|
||||
@ -50,7 +50,7 @@ public class UpdateResult extends AbstractQResult
|
||||
/*******************************************************************************
|
||||
**
|
||||
*******************************************************************************/
|
||||
public void setRecords(List<QRecordWithStatus> records)
|
||||
public void setRecords(List<QRecord> records)
|
||||
{
|
||||
this.records = records;
|
||||
}
|
||||
|
@ -29,20 +29,53 @@ import java.util.Map;
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
* Data Record within qqq. e.g., a single row from a database.
|
||||
*
|
||||
* Actual values (e.g., as stored in the backend system) are in the `values`
|
||||
* map. Keys in this map are fieldNames from the QTableMetaData.
|
||||
*
|
||||
* "Display values" (e.g., labels for possible values, or formatted numbers
|
||||
* (e.g., quantities with commas)) are in the displayValues map.
|
||||
** Data Record within qqq. e.g., a single row from a database.
|
||||
**
|
||||
** Actual values (e.g., as stored in the backend system) are in the `values`
|
||||
** map. Keys in this map are fieldNames from the QTableMetaData.
|
||||
**
|
||||
** "Display values" (e.g., labels for possible values, or formatted numbers
|
||||
** (e.g., quantities with commas)) are in the displayValues map.
|
||||
**
|
||||
** backendDetails are additional data about a record, that aren't strictly
|
||||
** values, but are more like meta-data - e.g., for a file-backend, what file the
|
||||
** record came from.
|
||||
**
|
||||
** Errors are meant to hold information about things that went wrong when
|
||||
** processing a record - e.g., in a list of records that may be the output of an
|
||||
** action, like a bulk load. TODO - redo as some status object?
|
||||
*******************************************************************************/
|
||||
public class QRecord implements Serializable
|
||||
{
|
||||
private String tableName;
|
||||
//x private Serializable primaryKey;
|
||||
private Map<String, Serializable> values = new LinkedHashMap<>();
|
||||
private Map<String, String> displayValues = new LinkedHashMap<>();
|
||||
private String tableName;
|
||||
private Map<String, Serializable> values = new LinkedHashMap<>();
|
||||
private Map<String, String> displayValues = new LinkedHashMap<>();
|
||||
private Map<String, Serializable> backendDetails = new LinkedHashMap<>();
|
||||
// todo private List<String> errors = new ArrayList<>();
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Default constructor.
|
||||
*******************************************************************************/
|
||||
public QRecord()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Copy constructor.
|
||||
** TODO ... should this do deep copies?
|
||||
*******************************************************************************/
|
||||
public QRecord(QRecord record)
|
||||
{
|
||||
this.tableName = record.tableName;
|
||||
this.values = record.values;
|
||||
this.displayValues = record.displayValues;
|
||||
this.backendDetails = record.backendDetails;
|
||||
// todo! this.errors = record.errors;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -120,34 +153,6 @@ public class QRecord implements Serializable
|
||||
return (this);
|
||||
}
|
||||
|
||||
//x /*******************************************************************************
|
||||
//x ** Getter for primaryKey
|
||||
//x **
|
||||
//x *******************************************************************************/
|
||||
//x public Serializable getPrimaryKey()
|
||||
//x {
|
||||
//x return primaryKey;
|
||||
//x }
|
||||
|
||||
//x /*******************************************************************************
|
||||
//x ** Setter for primaryKey
|
||||
//x **
|
||||
//x *******************************************************************************/
|
||||
//x public void setPrimaryKey(Serializable primaryKey)
|
||||
//x {
|
||||
//x this.primaryKey = primaryKey;
|
||||
//x }
|
||||
|
||||
//x /*******************************************************************************
|
||||
//x ** Setter for primaryKey
|
||||
//x **
|
||||
//x *******************************************************************************/
|
||||
//x public QRecord withPrimaryKey(Serializable primaryKey)
|
||||
//x {
|
||||
//x this.primaryKey = primaryKey;
|
||||
//x return (this);
|
||||
//x }
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
@ -247,4 +252,70 @@ public class QRecord implements Serializable
|
||||
return ((LocalDate) values.get(fieldName));
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Getter for backendDetails
|
||||
**
|
||||
*******************************************************************************/
|
||||
public Map<String, Serializable> getBackendDetails()
|
||||
{
|
||||
return backendDetails;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Setter for backendDetails
|
||||
**
|
||||
*******************************************************************************/
|
||||
public void setBackendDetails(Map<String, Serializable> backendDetails)
|
||||
{
|
||||
this.backendDetails = backendDetails;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Add one backendDetail to this record
|
||||
**
|
||||
*******************************************************************************/
|
||||
public void addBackendDetail(String key, Serializable value)
|
||||
{
|
||||
this.backendDetails.put(key, value);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Fluently Add one backendDetail to this record
|
||||
**
|
||||
*******************************************************************************/
|
||||
public QRecord withBackendDetail(String key, Serializable value)
|
||||
{
|
||||
addBackendDetail(key, value);
|
||||
return (this);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Get one backendDetail from this record
|
||||
**
|
||||
*******************************************************************************/
|
||||
public Serializable getBackendDetail(String key)
|
||||
{
|
||||
return this.backendDetails.get(key);
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** Get one backendDetail from this record as a String
|
||||
**
|
||||
*******************************************************************************/
|
||||
public String getBackendDetailString(String key)
|
||||
{
|
||||
return (String) this.backendDetails.get(key);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -26,7 +26,6 @@ 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.data.QRecord;
|
||||
import com.kingsrook.qqq.backend.core.model.data.QRecordWithStatus;
|
||||
import com.kingsrook.qqq.backend.core.modules.interfaces.DeleteInterface;
|
||||
|
||||
|
||||
@ -47,10 +46,10 @@ public class MockDeleteAction implements DeleteInterface
|
||||
DeleteResult rs = new DeleteResult();
|
||||
|
||||
rs.setRecords(deleteRequest.getPrimaryKeys().stream().map(primaryKey ->
|
||||
{
|
||||
QRecord qRecord = new QRecord().withTableName(deleteRequest.getTableName()).withValue("id", primaryKey);
|
||||
return new QRecordWithStatus(qRecord);
|
||||
}).toList());
|
||||
new QRecord()
|
||||
.withTableName(deleteRequest.getTableName())
|
||||
.withValue("id", primaryKey))
|
||||
.toList());
|
||||
|
||||
return rs;
|
||||
}
|
||||
|
@ -25,7 +25,6 @@ package com.kingsrook.qqq.backend.core.modules.mock;
|
||||
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.data.QRecordWithStatus;
|
||||
import com.kingsrook.qqq.backend.core.modules.interfaces.InsertInterface;
|
||||
|
||||
|
||||
@ -45,10 +44,7 @@ public class MockInsertAction implements InsertInterface
|
||||
{
|
||||
InsertResult rs = new InsertResult();
|
||||
|
||||
rs.setRecords(insertRequest.getRecords().stream().map(qRecord ->
|
||||
{
|
||||
return new QRecordWithStatus(qRecord);
|
||||
}).toList());
|
||||
rs.setRecords(insertRequest.getRecords());
|
||||
|
||||
return rs;
|
||||
}
|
||||
|
@ -25,7 +25,6 @@ package com.kingsrook.qqq.backend.core.modules.mock;
|
||||
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.data.QRecordWithStatus;
|
||||
import com.kingsrook.qqq.backend.core.modules.interfaces.UpdateInterface;
|
||||
|
||||
|
||||
@ -45,10 +44,7 @@ public class MockUpdateAction implements UpdateInterface
|
||||
{
|
||||
UpdateResult rs = new UpdateResult();
|
||||
|
||||
rs.setRecords(updateRequest.getRecords().stream().map(qRecord ->
|
||||
{
|
||||
return new QRecordWithStatus(qRecord);
|
||||
}).toList());
|
||||
rs.setRecords(updateRequest.getRecords());
|
||||
|
||||
return rs;
|
||||
}
|
||||
|
@ -28,7 +28,6 @@ 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.utils.TestUtils;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||
|
||||
@ -55,7 +54,7 @@ class DeleteActionTest
|
||||
DeleteResult result = new DeleteAction().execute(request);
|
||||
assertNotNull(result);
|
||||
assertEquals(2, result.getRecords().size());
|
||||
assertTrue(result.getRecords().stream().allMatch(r -> r.getErrors() == null));
|
||||
// todo - add errors to QRecord? assertTrue(result.getRecords().stream().allMatch(r -> r.getErrors() == null));
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -60,8 +60,9 @@ class JsonUtilsTest
|
||||
public void test_toJsonQRecordInput()
|
||||
{
|
||||
QRecord qRecord = getQRecord();
|
||||
String json = JsonUtils.toJson(qRecord);
|
||||
assertEquals("{\"tableName\":\"foo\",\"values\":{\"foo\":\"Foo\",\"bar\":3.14159},\"displayValues\":{}}", json);
|
||||
String json = JsonUtils.toJson(qRecord);
|
||||
assertEquals("""
|
||||
{"tableName":"foo","values":{"foo":"Foo","bar":3.14159},"displayValues":{},"backendDetails":{}}""", json);
|
||||
}
|
||||
|
||||
|
||||
@ -90,6 +91,7 @@ class JsonUtilsTest
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
*******************************************************************************/
|
||||
@ -109,7 +111,7 @@ class JsonUtilsTest
|
||||
public void test_toPrettyJsonQRecordInput()
|
||||
{
|
||||
QRecord qRecord = getQRecord();
|
||||
String json = JsonUtils.toPrettyJson(qRecord);
|
||||
String json = JsonUtils.toPrettyJson(qRecord);
|
||||
// todo assertEquals("{\"tableName\":\"foo\",\"primaryKey\":1,\"values\":{\"foo\":\"Foo\",\"bar\":3.14159}}", json);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user