Pass transaction through from insert/update/delete actions through DMLAuditAction into AuditAction

This commit is contained in:
2025-07-03 07:59:40 -05:00
parent fa80daa778
commit f97a3d5097
7 changed files with 89 additions and 0 deletions

View File

@ -291,6 +291,7 @@ public class AuditAction extends AbstractQActionFunction<AuditInput, AuditOutput
///////////////////////////// /////////////////////////////
InsertInput insertInput = new InsertInput(); InsertInput insertInput = new InsertInput();
insertInput.setTableName("audit"); insertInput.setTableName("audit");
insertInput.setTransaction(input.getTransaction());
insertInput.setRecords(auditRecords); insertInput.setRecords(auditRecords);
InsertOutput insertOutput = new InsertAction().execute(insertInput); InsertOutput insertOutput = new InsertAction().execute(insertInput);
@ -318,6 +319,7 @@ public class AuditAction extends AbstractQActionFunction<AuditInput, AuditOutput
{ {
insertInput = new InsertInput(); insertInput = new InsertInput();
insertInput.setTableName("auditDetail"); insertInput.setTableName("auditDetail");
insertInput.setTransaction(input.getTransaction());
insertInput.setRecords(auditDetailRecords); insertInput.setRecords(auditDetailRecords);
new InsertAction().execute(insertInput); new InsertAction().execute(insertInput);
} }

View File

@ -124,6 +124,7 @@ public class DMLAuditAction extends AbstractQActionFunction<DMLAuditInput, DMLAu
String contextSuffix = getContentSuffix(input); String contextSuffix = getContentSuffix(input);
AuditInput auditInput = new AuditInput(); AuditInput auditInput = new AuditInput();
auditInput.setTransaction(input.getTransaction());
if(auditLevel.equals(AuditLevel.RECORD) || (auditLevel.equals(AuditLevel.FIELD) && !dmlType.supportsFields)) if(auditLevel.equals(AuditLevel.RECORD) || (auditLevel.equals(AuditLevel.FIELD) && !dmlType.supportsFields))
{ {
//////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////

View File

@ -246,6 +246,7 @@ public class DeleteAction
{ {
DMLAuditInput dmlAuditInput = new DMLAuditInput() DMLAuditInput dmlAuditInput = new DMLAuditInput()
.withTableActionInput(deleteInput) .withTableActionInput(deleteInput)
.withTransaction(deleteInput.getTransaction())
.withAuditContext(deleteInput.getAuditContext()); .withAuditContext(deleteInput.getAuditContext());
oldRecordList.ifPresent(l -> dmlAuditInput.setRecordList(l)); oldRecordList.ifPresent(l -> dmlAuditInput.setRecordList(l));
new DMLAuditAction().execute(dmlAuditInput); new DMLAuditAction().execute(dmlAuditInput);

View File

@ -170,6 +170,7 @@ public class InsertAction extends AbstractQActionFunction<InsertInput, InsertOut
{ {
new DMLAuditAction().execute(new DMLAuditInput() new DMLAuditAction().execute(new DMLAuditInput()
.withTableActionInput(insertInput) .withTableActionInput(insertInput)
.withTransaction(insertInput.getTransaction())
.withAuditContext(insertInput.getAuditContext()) .withAuditContext(insertInput.getAuditContext())
.withRecordList(insertOutput.getRecords())); .withRecordList(insertOutput.getRecords()));
} }

View File

@ -190,6 +190,7 @@ public class UpdateAction
else else
{ {
DMLAuditInput dmlAuditInput = new DMLAuditInput() DMLAuditInput dmlAuditInput = new DMLAuditInput()
.withTransaction(updateInput.getTransaction())
.withTableActionInput(updateInput) .withTableActionInput(updateInput)
.withRecordList(updateOutput.getRecords()) .withRecordList(updateOutput.getRecords())
.withAuditContext(updateInput.getAuditContext()); .withAuditContext(updateInput.getAuditContext());

View File

@ -25,6 +25,7 @@ package com.kingsrook.qqq.backend.core.model.actions.audits;
import java.io.Serializable; import java.io.Serializable;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import com.kingsrook.qqq.backend.core.actions.QBackendTransaction;
import com.kingsrook.qqq.backend.core.model.actions.AbstractActionInput; import com.kingsrook.qqq.backend.core.model.actions.AbstractActionInput;
@ -36,6 +37,8 @@ public class AuditInput extends AbstractActionInput implements Serializable
{ {
private List<AuditSingleInput> auditSingleInputList = new ArrayList<>(); private List<AuditSingleInput> auditSingleInputList = new ArrayList<>();
private QBackendTransaction transaction;
/******************************************************************************* /*******************************************************************************
@ -92,4 +95,42 @@ public class AuditInput extends AbstractActionInput implements Serializable
return (this); return (this);
} }
/*******************************************************************************
* Getter for transaction
* @see #withTransaction(QBackendTransaction)
*******************************************************************************/
public QBackendTransaction getTransaction()
{
return (this.transaction);
}
/*******************************************************************************
* Setter for transaction
* @see #withTransaction(QBackendTransaction)
*******************************************************************************/
public void setTransaction(QBackendTransaction transaction)
{
this.transaction = transaction;
}
/*******************************************************************************
* Fluent setter for transaction
*
* @param transaction
* transaction upon which the audits will be inserted.
*
* @return this
*******************************************************************************/
public AuditInput withTransaction(QBackendTransaction transaction)
{
this.transaction = transaction;
return (this);
}
} }

View File

@ -24,6 +24,7 @@ package com.kingsrook.qqq.backend.core.model.actions.audits;
import java.io.Serializable; import java.io.Serializable;
import java.util.List; import java.util.List;
import com.kingsrook.qqq.backend.core.actions.QBackendTransaction;
import com.kingsrook.qqq.backend.core.model.actions.AbstractActionInput; import com.kingsrook.qqq.backend.core.model.actions.AbstractActionInput;
import com.kingsrook.qqq.backend.core.model.actions.AbstractTableActionInput; import com.kingsrook.qqq.backend.core.model.actions.AbstractTableActionInput;
import com.kingsrook.qqq.backend.core.model.data.QRecord; import com.kingsrook.qqq.backend.core.model.data.QRecord;
@ -38,6 +39,8 @@ public class DMLAuditInput extends AbstractActionInput implements Serializable
private List<QRecord> oldRecordList; private List<QRecord> oldRecordList;
private AbstractTableActionInput tableActionInput; private AbstractTableActionInput tableActionInput;
private QBackendTransaction transaction;
private String auditContext = null; private String auditContext = null;
@ -164,4 +167,43 @@ public class DMLAuditInput extends AbstractActionInput implements Serializable
return (this); return (this);
} }
/*******************************************************************************
* Getter for transaction
* @see #withTransaction(QBackendTransaction)
*******************************************************************************/
public QBackendTransaction getTransaction()
{
return (this.transaction);
}
/*******************************************************************************
* Setter for transaction
* @see #withTransaction(QBackendTransaction)
*******************************************************************************/
public void setTransaction(QBackendTransaction transaction)
{
this.transaction = transaction;
}
/*******************************************************************************
* Fluent setter for transaction
*
* @param transaction
* transaction that will be used for inserting the audits, where (presumably)
* the DML against the record occurred as well
*
* @return this
*******************************************************************************/
public DMLAuditInput withTransaction(QBackendTransaction transaction)
{
this.transaction = transaction;
return (this);
}
} }