mirror of
https://github.com/Kingsrook/qqq.git
synced 2025-07-20 22:18:43 +00:00
Initial work to change scripts, tableTriggers, and savedFilters to use qqqTableId instead of tableName
This commit is contained in:
@ -45,6 +45,7 @@ import com.kingsrook.qqq.backend.core.model.metadata.tables.automation.QTableAut
|
|||||||
import com.kingsrook.qqq.backend.core.model.metadata.tables.automation.TableAutomationAction;
|
import com.kingsrook.qqq.backend.core.model.metadata.tables.automation.TableAutomationAction;
|
||||||
import com.kingsrook.qqq.backend.core.model.metadata.tables.automation.TriggerEvent;
|
import com.kingsrook.qqq.backend.core.model.metadata.tables.automation.TriggerEvent;
|
||||||
import com.kingsrook.qqq.backend.core.model.session.QSession;
|
import com.kingsrook.qqq.backend.core.model.session.QSession;
|
||||||
|
import com.kingsrook.qqq.backend.core.model.tables.QQQTableAccessor;
|
||||||
import com.kingsrook.qqq.backend.core.utils.CollectionUtils;
|
import com.kingsrook.qqq.backend.core.utils.CollectionUtils;
|
||||||
import org.apache.commons.lang.NotImplementedException;
|
import org.apache.commons.lang.NotImplementedException;
|
||||||
|
|
||||||
@ -171,7 +172,7 @@ public class RecordAutomationStatusUpdater
|
|||||||
CountInput countInput = new CountInput();
|
CountInput countInput = new CountInput();
|
||||||
countInput.setTableName(TableTrigger.TABLE_NAME);
|
countInput.setTableName(TableTrigger.TABLE_NAME);
|
||||||
countInput.setFilter(new QQueryFilter(
|
countInput.setFilter(new QQueryFilter(
|
||||||
new QFilterCriteria("tableName", QCriteriaOperator.EQUALS, table.getName()),
|
new QFilterCriteria("qqqTableId", QCriteriaOperator.EQUALS, QQQTableAccessor.getQQQTableId(table.getName())),
|
||||||
new QFilterCriteria(triggerEvent.equals(TriggerEvent.POST_INSERT) ? "postInsert" : "postUpdate", QCriteriaOperator.EQUALS, true)
|
new QFilterCriteria(triggerEvent.equals(TriggerEvent.POST_INSERT) ? "postInsert" : "postUpdate", QCriteriaOperator.EQUALS, true)
|
||||||
));
|
));
|
||||||
CountOutput countOutput = new CountAction().execute(countInput);
|
CountOutput countOutput = new CountAction().execute(countInput);
|
||||||
|
@ -66,6 +66,7 @@ import com.kingsrook.qqq.backend.core.model.metadata.tables.automation.TableAuto
|
|||||||
import com.kingsrook.qqq.backend.core.model.metadata.tables.automation.TriggerEvent;
|
import com.kingsrook.qqq.backend.core.model.metadata.tables.automation.TriggerEvent;
|
||||||
import com.kingsrook.qqq.backend.core.model.savedfilters.SavedFilter;
|
import com.kingsrook.qqq.backend.core.model.savedfilters.SavedFilter;
|
||||||
import com.kingsrook.qqq.backend.core.model.session.QSession;
|
import com.kingsrook.qqq.backend.core.model.session.QSession;
|
||||||
|
import com.kingsrook.qqq.backend.core.model.tables.QQQTableAccessor;
|
||||||
import com.kingsrook.qqq.backend.core.utils.CollectionUtils;
|
import com.kingsrook.qqq.backend.core.utils.CollectionUtils;
|
||||||
import com.kingsrook.qqq.backend.core.utils.JsonUtils;
|
import com.kingsrook.qqq.backend.core.utils.JsonUtils;
|
||||||
import com.kingsrook.qqq.backend.core.utils.StringUtils;
|
import com.kingsrook.qqq.backend.core.utils.StringUtils;
|
||||||
@ -270,7 +271,7 @@ public class PollingAutomationPerTableRunner implements Runnable
|
|||||||
QueryInput queryInput = new QueryInput();
|
QueryInput queryInput = new QueryInput();
|
||||||
queryInput.setTableName(TableTrigger.TABLE_NAME);
|
queryInput.setTableName(TableTrigger.TABLE_NAME);
|
||||||
queryInput.setFilter(new QQueryFilter(
|
queryInput.setFilter(new QQueryFilter(
|
||||||
new QFilterCriteria("tableName", QCriteriaOperator.EQUALS, table.getName()),
|
new QFilterCriteria("qqqTableId", QCriteriaOperator.EQUALS, QQQTableAccessor.getQQQTableId(table.getName())),
|
||||||
new QFilterCriteria(triggerEvent.equals(TriggerEvent.POST_INSERT) ? "postInsert" : "postUpdate", QCriteriaOperator.EQUALS, true)
|
new QFilterCriteria(triggerEvent.equals(TriggerEvent.POST_INSERT) ? "postInsert" : "postUpdate", QCriteriaOperator.EQUALS, true)
|
||||||
));
|
));
|
||||||
QueryOutput queryOutput = new QueryAction().execute(queryInput);
|
QueryOutput queryOutput = new QueryAction().execute(queryInput);
|
||||||
|
@ -31,16 +31,12 @@ import java.util.concurrent.Executors;
|
|||||||
import java.util.concurrent.ScheduledExecutorService;
|
import java.util.concurrent.ScheduledExecutorService;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
import com.kingsrook.qqq.backend.core.actions.tables.GetAction;
|
|
||||||
import com.kingsrook.qqq.backend.core.actions.tables.InsertAction;
|
import com.kingsrook.qqq.backend.core.actions.tables.InsertAction;
|
||||||
import com.kingsrook.qqq.backend.core.context.QContext;
|
import com.kingsrook.qqq.backend.core.context.QContext;
|
||||||
import com.kingsrook.qqq.backend.core.exceptions.QException;
|
import com.kingsrook.qqq.backend.core.exceptions.QException;
|
||||||
import com.kingsrook.qqq.backend.core.instances.QMetaDataVariableInterpreter;
|
import com.kingsrook.qqq.backend.core.instances.QMetaDataVariableInterpreter;
|
||||||
import com.kingsrook.qqq.backend.core.logging.QLogger;
|
import com.kingsrook.qqq.backend.core.logging.QLogger;
|
||||||
import com.kingsrook.qqq.backend.core.model.actions.tables.get.GetInput;
|
|
||||||
import com.kingsrook.qqq.backend.core.model.actions.tables.get.GetOutput;
|
|
||||||
import com.kingsrook.qqq.backend.core.model.actions.tables.insert.InsertInput;
|
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.actions.tables.query.QFilterCriteria;
|
import com.kingsrook.qqq.backend.core.model.actions.tables.query.QFilterCriteria;
|
||||||
import com.kingsrook.qqq.backend.core.model.actions.tables.query.QFilterOrderBy;
|
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.QQueryFilter;
|
||||||
@ -54,11 +50,9 @@ import com.kingsrook.qqq.backend.core.model.querystats.QueryStatCriteriaField;
|
|||||||
import com.kingsrook.qqq.backend.core.model.querystats.QueryStatJoinTable;
|
import com.kingsrook.qqq.backend.core.model.querystats.QueryStatJoinTable;
|
||||||
import com.kingsrook.qqq.backend.core.model.querystats.QueryStatOrderByField;
|
import com.kingsrook.qqq.backend.core.model.querystats.QueryStatOrderByField;
|
||||||
import com.kingsrook.qqq.backend.core.model.session.QSession;
|
import com.kingsrook.qqq.backend.core.model.session.QSession;
|
||||||
import com.kingsrook.qqq.backend.core.model.tables.QQQTable;
|
import com.kingsrook.qqq.backend.core.model.tables.QQQTableAccessor;
|
||||||
import com.kingsrook.qqq.backend.core.model.tables.QQQTablesMetaDataProvider;
|
|
||||||
import com.kingsrook.qqq.backend.core.utils.CollectionUtils;
|
import com.kingsrook.qqq.backend.core.utils.CollectionUtils;
|
||||||
import com.kingsrook.qqq.backend.core.utils.StringUtils;
|
import com.kingsrook.qqq.backend.core.utils.StringUtils;
|
||||||
import com.kingsrook.qqq.backend.core.utils.collections.MapBuilder;
|
|
||||||
import static com.kingsrook.qqq.backend.core.logging.LogUtils.logPair;
|
import static com.kingsrook.qqq.backend.core.logging.LogUtils.logPair;
|
||||||
|
|
||||||
|
|
||||||
@ -363,7 +357,7 @@ public class QueryStatManager
|
|||||||
//////////////////////
|
//////////////////////
|
||||||
// set the table id //
|
// set the table id //
|
||||||
//////////////////////
|
//////////////////////
|
||||||
Integer qqqTableId = getQQQTableId(queryStat.getTableName());
|
Integer qqqTableId = QQQTableAccessor.getQQQTableId(queryStat.getTableName());
|
||||||
queryStat.setQqqTableId(qqqTableId);
|
queryStat.setQqqTableId(qqqTableId);
|
||||||
|
|
||||||
//////////////////////////////
|
//////////////////////////////
|
||||||
@ -374,7 +368,7 @@ public class QueryStatManager
|
|||||||
List<QueryStatJoinTable> queryStatJoinTableList = new ArrayList<>();
|
List<QueryStatJoinTable> queryStatJoinTableList = new ArrayList<>();
|
||||||
for(String joinTableName : queryStat.getJoinTableNames())
|
for(String joinTableName : queryStat.getJoinTableNames())
|
||||||
{
|
{
|
||||||
queryStatJoinTableList.add(new QueryStatJoinTable().withQqqTableId(getQQQTableId(joinTableName)));
|
queryStatJoinTableList.add(new QueryStatJoinTable().withQqqTableId(QQQTableAccessor.getQQQTableId(joinTableName)));
|
||||||
}
|
}
|
||||||
queryStat.setQueryStatJoinTableList(queryStatJoinTableList);
|
queryStat.setQueryStatJoinTableList(queryStatJoinTableList);
|
||||||
}
|
}
|
||||||
@ -452,7 +446,7 @@ public class QueryStatManager
|
|||||||
String[] parts = fieldName.split("\\.");
|
String[] parts = fieldName.split("\\.");
|
||||||
if(parts.length > 1)
|
if(parts.length > 1)
|
||||||
{
|
{
|
||||||
queryStatCriteriaField.setQqqTableId(getQQQTableId(parts[0]));
|
queryStatCriteriaField.setQqqTableId(QQQTableAccessor.getQQQTableId(parts[0]));
|
||||||
queryStatCriteriaField.setName(parts[1]);
|
queryStatCriteriaField.setName(parts[1]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -490,7 +484,7 @@ public class QueryStatManager
|
|||||||
String[] parts = fieldName.split("\\.");
|
String[] parts = fieldName.split("\\.");
|
||||||
if(parts.length > 1)
|
if(parts.length > 1)
|
||||||
{
|
{
|
||||||
queryStatOrderByField.setQqqTableId(getQQQTableId(parts[0]));
|
queryStatOrderByField.setQqqTableId(QQQTableAccessor.getQQQTableId(parts[0]));
|
||||||
queryStatOrderByField.setName(parts[1]);
|
queryStatOrderByField.setName(parts[1]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -505,43 +499,6 @@ public class QueryStatManager
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************************
|
|
||||||
**
|
|
||||||
*******************************************************************************/
|
|
||||||
private static Integer getQQQTableId(String tableName) throws QException
|
|
||||||
{
|
|
||||||
/////////////////////////////
|
|
||||||
// look in the cache table //
|
|
||||||
/////////////////////////////
|
|
||||||
GetInput getInput = new GetInput();
|
|
||||||
getInput.setTableName(QQQTablesMetaDataProvider.QQQ_TABLE_CACHE_TABLE_NAME);
|
|
||||||
getInput.setUniqueKey(MapBuilder.of("name", tableName));
|
|
||||||
GetOutput getOutput = new GetAction().execute(getInput);
|
|
||||||
|
|
||||||
////////////////////////
|
|
||||||
// upon cache miss... //
|
|
||||||
////////////////////////
|
|
||||||
if(getOutput.getRecord() == null)
|
|
||||||
{
|
|
||||||
///////////////////////////////////////////////////////
|
|
||||||
// insert the record (into the table, not the cache) //
|
|
||||||
///////////////////////////////////////////////////////
|
|
||||||
QTableMetaData tableMetaData = getInstance().qInstance.getTable(tableName);
|
|
||||||
InsertInput insertInput = new InsertInput();
|
|
||||||
insertInput.setTableName(QQQTable.TABLE_NAME);
|
|
||||||
insertInput.setRecords(List.of(new QRecord().withValue("name", tableName).withValue("label", tableMetaData.getLabel())));
|
|
||||||
InsertOutput insertOutput = new InsertAction().execute(insertInput);
|
|
||||||
|
|
||||||
///////////////////////////////////
|
|
||||||
// repeat the get from the cache //
|
|
||||||
///////////////////////////////////
|
|
||||||
getOutput = new GetAction().execute(getInput);
|
|
||||||
}
|
|
||||||
|
|
||||||
return getOutput.getRecord().getValueInteger("id");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -27,9 +27,9 @@ import com.kingsrook.qqq.backend.core.exceptions.QException;
|
|||||||
import com.kingsrook.qqq.backend.core.model.data.QField;
|
import com.kingsrook.qqq.backend.core.model.data.QField;
|
||||||
import com.kingsrook.qqq.backend.core.model.data.QRecord;
|
import com.kingsrook.qqq.backend.core.model.data.QRecord;
|
||||||
import com.kingsrook.qqq.backend.core.model.data.QRecordEntity;
|
import com.kingsrook.qqq.backend.core.model.data.QRecordEntity;
|
||||||
import com.kingsrook.qqq.backend.core.model.metadata.tables.TablesPossibleValueSourceMetaDataProvider;
|
|
||||||
import com.kingsrook.qqq.backend.core.model.savedfilters.SavedFilter;
|
import com.kingsrook.qqq.backend.core.model.savedfilters.SavedFilter;
|
||||||
import com.kingsrook.qqq.backend.core.model.scripts.Script;
|
import com.kingsrook.qqq.backend.core.model.scripts.Script;
|
||||||
|
import com.kingsrook.qqq.backend.core.model.tables.QQQTable;
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
@ -48,8 +48,8 @@ public class TableTrigger extends QRecordEntity
|
|||||||
@QField(isEditable = false)
|
@QField(isEditable = false)
|
||||||
private Instant modifyDate;
|
private Instant modifyDate;
|
||||||
|
|
||||||
@QField(possibleValueSourceName = TablesPossibleValueSourceMetaDataProvider.NAME)
|
@QField(possibleValueSourceName = QQQTable.TABLE_NAME)
|
||||||
private String tableName;
|
private Integer qqqTableId;
|
||||||
|
|
||||||
@QField(possibleValueSourceName = SavedFilter.TABLE_NAME)
|
@QField(possibleValueSourceName = SavedFilter.TABLE_NAME)
|
||||||
private Integer filterId;
|
private Integer filterId;
|
||||||
@ -191,40 +191,6 @@ public class TableTrigger extends QRecordEntity
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************************
|
|
||||||
** Getter for tableName
|
|
||||||
**
|
|
||||||
*******************************************************************************/
|
|
||||||
public String getTableName()
|
|
||||||
{
|
|
||||||
return tableName;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************************
|
|
||||||
** Setter for tableName
|
|
||||||
**
|
|
||||||
*******************************************************************************/
|
|
||||||
public void setTableName(String tableName)
|
|
||||||
{
|
|
||||||
this.tableName = tableName;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************************
|
|
||||||
** Fluent setter for tableName
|
|
||||||
**
|
|
||||||
*******************************************************************************/
|
|
||||||
public TableTrigger withTableName(String tableName)
|
|
||||||
{
|
|
||||||
this.tableName = tableName;
|
|
||||||
return (this);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
** Getter for filterId
|
** Getter for filterId
|
||||||
**
|
**
|
||||||
@ -390,4 +356,35 @@ public class TableTrigger extends QRecordEntity
|
|||||||
return (this);
|
return (this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
** Getter for qqqTableId
|
||||||
|
*******************************************************************************/
|
||||||
|
public Integer getQqqTableId()
|
||||||
|
{
|
||||||
|
return (this.qqqTableId);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
** Setter for qqqTableId
|
||||||
|
*******************************************************************************/
|
||||||
|
public void setQqqTableId(Integer qqqTableId)
|
||||||
|
{
|
||||||
|
this.qqqTableId = qqqTableId;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
** Fluent setter for qqqTableId
|
||||||
|
*******************************************************************************/
|
||||||
|
public TableTrigger withQqqTableId(Integer qqqTableId)
|
||||||
|
{
|
||||||
|
this.qqqTableId = qqqTableId;
|
||||||
|
return (this);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -27,6 +27,7 @@ import com.kingsrook.qqq.backend.core.exceptions.QException;
|
|||||||
import com.kingsrook.qqq.backend.core.model.data.QField;
|
import com.kingsrook.qqq.backend.core.model.data.QField;
|
||||||
import com.kingsrook.qqq.backend.core.model.data.QRecord;
|
import com.kingsrook.qqq.backend.core.model.data.QRecord;
|
||||||
import com.kingsrook.qqq.backend.core.model.data.QRecordEntity;
|
import com.kingsrook.qqq.backend.core.model.data.QRecordEntity;
|
||||||
|
import com.kingsrook.qqq.backend.core.model.tables.QQQTable;
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
@ -48,8 +49,8 @@ public class SavedFilter extends QRecordEntity
|
|||||||
@QField(isRequired = true)
|
@QField(isRequired = true)
|
||||||
private String label;
|
private String label;
|
||||||
|
|
||||||
@QField(isEditable = false)
|
@QField(possibleValueSourceName = QQQTable.TABLE_NAME)
|
||||||
private String tableName;
|
private Integer qqqTableId;
|
||||||
|
|
||||||
@QField(isEditable = false)
|
@QField(isEditable = false)
|
||||||
private String userId;
|
private String userId;
|
||||||
@ -180,40 +181,6 @@ public class SavedFilter extends QRecordEntity
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************************
|
|
||||||
** Getter for tableName
|
|
||||||
**
|
|
||||||
*******************************************************************************/
|
|
||||||
public String getTableName()
|
|
||||||
{
|
|
||||||
return tableName;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************************
|
|
||||||
** Setter for tableName
|
|
||||||
**
|
|
||||||
*******************************************************************************/
|
|
||||||
public void setTableName(String tableName)
|
|
||||||
{
|
|
||||||
this.tableName = tableName;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************************
|
|
||||||
** Fluent setter for tableName
|
|
||||||
**
|
|
||||||
*******************************************************************************/
|
|
||||||
public SavedFilter withTableName(String tableName)
|
|
||||||
{
|
|
||||||
this.tableName = tableName;
|
|
||||||
return (this);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
** Getter for userId
|
** Getter for userId
|
||||||
**
|
**
|
||||||
@ -280,4 +247,35 @@ public class SavedFilter extends QRecordEntity
|
|||||||
return (this);
|
return (this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
** Getter for qqqTableId
|
||||||
|
*******************************************************************************/
|
||||||
|
public Integer getQqqTableId()
|
||||||
|
{
|
||||||
|
return (this.qqqTableId);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
** Setter for qqqTableId
|
||||||
|
*******************************************************************************/
|
||||||
|
public void setQqqTableId(Integer qqqTableId)
|
||||||
|
{
|
||||||
|
this.qqqTableId = qqqTableId;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
** Fluent setter for qqqTableId
|
||||||
|
*******************************************************************************/
|
||||||
|
public SavedFilter withQqqTableId(Integer qqqTableId)
|
||||||
|
{
|
||||||
|
this.qqqTableId = qqqTableId;
|
||||||
|
return (this);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -27,7 +27,7 @@ import com.kingsrook.qqq.backend.core.exceptions.QException;
|
|||||||
import com.kingsrook.qqq.backend.core.model.data.QField;
|
import com.kingsrook.qqq.backend.core.model.data.QField;
|
||||||
import com.kingsrook.qqq.backend.core.model.data.QRecord;
|
import com.kingsrook.qqq.backend.core.model.data.QRecord;
|
||||||
import com.kingsrook.qqq.backend.core.model.data.QRecordEntity;
|
import com.kingsrook.qqq.backend.core.model.data.QRecordEntity;
|
||||||
import com.kingsrook.qqq.backend.core.model.metadata.tables.TablesPossibleValueSourceMetaDataProvider;
|
import com.kingsrook.qqq.backend.core.model.tables.QQQTable;
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
@ -52,8 +52,8 @@ public class Script extends QRecordEntity
|
|||||||
@QField(possibleValueSourceName = "scriptType")
|
@QField(possibleValueSourceName = "scriptType")
|
||||||
private Integer scriptTypeId;
|
private Integer scriptTypeId;
|
||||||
|
|
||||||
@QField(possibleValueSourceName = TablesPossibleValueSourceMetaDataProvider.NAME)
|
@QField(possibleValueSourceName = QQQTable.TABLE_NAME)
|
||||||
private String tableName;
|
private Integer qqqTableId;
|
||||||
|
|
||||||
@QField()
|
@QField()
|
||||||
private Integer maxBatchSize;
|
private Integer maxBatchSize;
|
||||||
@ -288,37 +288,6 @@ public class Script extends QRecordEntity
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************************
|
|
||||||
** Getter for tableName
|
|
||||||
*******************************************************************************/
|
|
||||||
public String getTableName()
|
|
||||||
{
|
|
||||||
return (this.tableName);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************************
|
|
||||||
** Setter for tableName
|
|
||||||
*******************************************************************************/
|
|
||||||
public void setTableName(String tableName)
|
|
||||||
{
|
|
||||||
this.tableName = tableName;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************************
|
|
||||||
** Fluent setter for tableName
|
|
||||||
*******************************************************************************/
|
|
||||||
public Script withTableName(String tableName)
|
|
||||||
{
|
|
||||||
this.tableName = tableName;
|
|
||||||
return (this);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
** Getter for maxBatchSize
|
** Getter for maxBatchSize
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
@ -348,4 +317,35 @@ public class Script extends QRecordEntity
|
|||||||
return (this);
|
return (this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
** Getter for qqqTableId
|
||||||
|
*******************************************************************************/
|
||||||
|
public Integer getQqqTableId()
|
||||||
|
{
|
||||||
|
return (this.qqqTableId);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
** Setter for qqqTableId
|
||||||
|
*******************************************************************************/
|
||||||
|
public void setQqqTableId(Integer qqqTableId)
|
||||||
|
{
|
||||||
|
this.qqqTableId = qqqTableId;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
** Fluent setter for qqqTableId
|
||||||
|
*******************************************************************************/
|
||||||
|
public Script withQqqTableId(Integer qqqTableId)
|
||||||
|
{
|
||||||
|
this.qqqTableId = qqqTableId;
|
||||||
|
return (this);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -66,6 +66,7 @@ import com.kingsrook.qqq.backend.core.processes.implementations.etl.streamedwith
|
|||||||
import com.kingsrook.qqq.backend.core.processes.implementations.scripts.LoadScriptTestDetailsProcessStep;
|
import com.kingsrook.qqq.backend.core.processes.implementations.scripts.LoadScriptTestDetailsProcessStep;
|
||||||
import com.kingsrook.qqq.backend.core.processes.implementations.scripts.RunRecordScriptExtractStep;
|
import com.kingsrook.qqq.backend.core.processes.implementations.scripts.RunRecordScriptExtractStep;
|
||||||
import com.kingsrook.qqq.backend.core.processes.implementations.scripts.RunRecordScriptLoadStep;
|
import com.kingsrook.qqq.backend.core.processes.implementations.scripts.RunRecordScriptLoadStep;
|
||||||
|
import com.kingsrook.qqq.backend.core.processes.implementations.scripts.RunRecordScriptPreStep;
|
||||||
import com.kingsrook.qqq.backend.core.processes.implementations.scripts.RunRecordScriptTransformStep;
|
import com.kingsrook.qqq.backend.core.processes.implementations.scripts.RunRecordScriptTransformStep;
|
||||||
import com.kingsrook.qqq.backend.core.processes.implementations.scripts.StoreScriptRevisionProcessStep;
|
import com.kingsrook.qqq.backend.core.processes.implementations.scripts.StoreScriptRevisionProcessStep;
|
||||||
import com.kingsrook.qqq.backend.core.processes.implementations.scripts.TestScriptProcessStep;
|
import com.kingsrook.qqq.backend.core.processes.implementations.scripts.TestScriptProcessStep;
|
||||||
@ -96,7 +97,11 @@ public class ScriptsMetaDataProvider
|
|||||||
defineStandardScriptsPossibleValueSources(instance);
|
defineStandardScriptsPossibleValueSources(instance);
|
||||||
defineStandardScriptsJoins(instance);
|
defineStandardScriptsJoins(instance);
|
||||||
defineStandardScriptsWidgets(instance);
|
defineStandardScriptsWidgets(instance);
|
||||||
|
|
||||||
|
// todo - change this from an enum-backed PVS to use qqqTable table, exposed in-app, in API
|
||||||
|
// so api docs don't always need refreshed
|
||||||
instance.addPossibleValueSource(TablesPossibleValueSourceMetaDataProvider.defineTablesPossibleValueSource(instance));
|
instance.addPossibleValueSource(TablesPossibleValueSourceMetaDataProvider.defineTablesPossibleValueSource(instance));
|
||||||
|
|
||||||
instance.addProcess(defineStoreScriptRevisionProcess());
|
instance.addProcess(defineStoreScriptRevisionProcess());
|
||||||
instance.addProcess(defineTestScriptProcess());
|
instance.addProcess(defineTestScriptProcess());
|
||||||
instance.addProcess(defineLoadScriptTestDetailsProcess());
|
instance.addProcess(defineLoadScriptTestDetailsProcess());
|
||||||
@ -174,15 +179,25 @@ public class ScriptsMetaDataProvider
|
|||||||
.withLoadStepClass(RunRecordScriptLoadStep.class)
|
.withLoadStepClass(RunRecordScriptLoadStep.class)
|
||||||
.getProcessMetaData();
|
.getProcessMetaData();
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////
|
||||||
|
// add a screen before the extract step - where user selects their script //
|
||||||
|
////////////////////////////////////////////////////////////////////////////
|
||||||
processMetaData.addStep(0, new QFrontendStepMetaData()
|
processMetaData.addStep(0, new QFrontendStepMetaData()
|
||||||
.withName("input")
|
.withName("input")
|
||||||
.withComponent(new QFrontendComponentMetaData().withType(QComponentType.EDIT_FORM))
|
.withComponent(new QFrontendComponentMetaData().withType(QComponentType.EDIT_FORM))
|
||||||
.withFormField(new QFieldMetaData("scriptId", QFieldType.INTEGER).withPossibleValueSourceName(Script.TABLE_NAME)
|
.withFormField(new QFieldMetaData("scriptId", QFieldType.INTEGER).withPossibleValueSourceName(Script.TABLE_NAME)
|
||||||
.withPossibleValueSourceFilter(new QQueryFilter(
|
.withPossibleValueSourceFilter(new QQueryFilter(
|
||||||
new QFilterCriteria("scriptType.name", QCriteriaOperator.EQUALS, SCRIPT_TYPE_NAME_RECORD),
|
new QFilterCriteria("scriptType.name", QCriteriaOperator.EQUALS, SCRIPT_TYPE_NAME_RECORD),
|
||||||
new QFilterCriteria("tableName", QCriteriaOperator.EQUALS, "${input.tableName}")
|
new QFilterCriteria("qqqTableId", QCriteriaOperator.EQUALS, "${input.qqqTableId}")
|
||||||
))));
|
))));
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// now - insert a step before the input screen, where the table name gets read //
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////
|
||||||
|
processMetaData.addStep(0, new QBackendStepMetaData()
|
||||||
|
.withName("preStep")
|
||||||
|
.withCode(new QCodeReference(RunRecordScriptPreStep.class)));
|
||||||
|
|
||||||
return (processMetaData);
|
return (processMetaData);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -383,16 +398,16 @@ public class ScriptsMetaDataProvider
|
|||||||
QTableMetaData tableMetaData = defineStandardTable(backendName, TableTrigger.TABLE_NAME, TableTrigger.class)
|
QTableMetaData tableMetaData = defineStandardTable(backendName, TableTrigger.TABLE_NAME, TableTrigger.class)
|
||||||
.withRecordLabelFields("id")
|
.withRecordLabelFields("id")
|
||||||
.withSection(new QFieldSection("identity", new QIcon().withName("badge"), Tier.T1, List.of("id")))
|
.withSection(new QFieldSection("identity", new QIcon().withName("badge"), Tier.T1, List.of("id")))
|
||||||
.withSection(new QFieldSection("contents", new QIcon().withName("data_object"), Tier.T2, List.of("tableName", "filterId", "scriptId", "priority", "postInsert", "postUpdate")))
|
.withSection(new QFieldSection("contents", new QIcon().withName("data_object"), Tier.T2, List.of("qqqTableId", "filterId", "scriptId", "priority", "postInsert", "postUpdate")))
|
||||||
.withSection(new QFieldSection("dates", new QIcon().withName("calendar_month"), Tier.T3, List.of("createDate", "modifyDate")));
|
.withSection(new QFieldSection("dates", new QIcon().withName("calendar_month"), Tier.T3, List.of("createDate", "modifyDate")));
|
||||||
|
|
||||||
tableMetaData.getField("scriptId").withPossibleValueSourceFilter(new QQueryFilter(
|
tableMetaData.getField("scriptId").withPossibleValueSourceFilter(new QQueryFilter(
|
||||||
new QFilterCriteria("scriptType.name", QCriteriaOperator.EQUALS, SCRIPT_TYPE_NAME_RECORD),
|
new QFilterCriteria("scriptType.name", QCriteriaOperator.EQUALS, SCRIPT_TYPE_NAME_RECORD),
|
||||||
new QFilterCriteria("script.tableName", QCriteriaOperator.EQUALS, "${input.tableName}")
|
new QFilterCriteria("script.qqqTableId", QCriteriaOperator.EQUALS, "${input.qqqTableId}")
|
||||||
));
|
));
|
||||||
|
|
||||||
tableMetaData.getField("filterId").withPossibleValueSourceFilter(new QQueryFilter(
|
tableMetaData.getField("filterId").withPossibleValueSourceFilter(new QQueryFilter(
|
||||||
new QFilterCriteria("tableName", QCriteriaOperator.EQUALS, "${input.tableName}")
|
new QFilterCriteria("qqqTableId", QCriteriaOperator.EQUALS, "${input.qqqTableId}")
|
||||||
));
|
));
|
||||||
|
|
||||||
return tableMetaData;
|
return tableMetaData;
|
||||||
@ -407,7 +422,7 @@ public class ScriptsMetaDataProvider
|
|||||||
{
|
{
|
||||||
QTableMetaData tableMetaData = defineStandardTable(backendName, Script.TABLE_NAME, Script.class)
|
QTableMetaData tableMetaData = defineStandardTable(backendName, Script.TABLE_NAME, Script.class)
|
||||||
.withSection(new QFieldSection("identity", new QIcon().withName("badge"), Tier.T1, List.of("id", "name", "scriptTypeId", "currentScriptRevisionId")))
|
.withSection(new QFieldSection("identity", new QIcon().withName("badge"), Tier.T1, List.of("id", "name", "scriptTypeId", "currentScriptRevisionId")))
|
||||||
.withSection(new QFieldSection("recordScriptSettings", new QIcon().withName("table_rows"), Tier.T2, List.of("tableName", "maxBatchSize")))
|
.withSection(new QFieldSection("recordScriptSettings", new QIcon().withName("table_rows"), Tier.T2, List.of("qqqTableId", "maxBatchSize")))
|
||||||
.withSection(new QFieldSection("contents", new QIcon().withName("data_object"), Tier.T2).withWidgetName("scriptViewer"))
|
.withSection(new QFieldSection("contents", new QIcon().withName("data_object"), Tier.T2).withWidgetName("scriptViewer"))
|
||||||
.withSection(new QFieldSection("dates", new QIcon().withName("calendar_month"), Tier.T3, List.of("createDate", "modifyDate")))
|
.withSection(new QFieldSection("dates", new QIcon().withName("calendar_month"), Tier.T3, List.of("createDate", "modifyDate")))
|
||||||
.withSection(new QFieldSection("lines", new QIcon().withName("horizontal_rule"), Tier.T2).withWidgetName(QJoinMetaData.makeInferredJoinName(Script.TABLE_NAME, ScriptLog.TABLE_NAME)));
|
.withSection(new QFieldSection("lines", new QIcon().withName("horizontal_rule"), Tier.T2).withWidgetName(QJoinMetaData.makeInferredJoinName(Script.TABLE_NAME, ScriptLog.TABLE_NAME)));
|
||||||
|
@ -0,0 +1,91 @@
|
|||||||
|
/*
|
||||||
|
* QQQ - Low-code Application Framework for Engineers.
|
||||||
|
* Copyright (C) 2021-2023. Kingsrook, LLC
|
||||||
|
* 651 N Broad St Ste 205 # 6917 | Middletown DE 19709 | United States
|
||||||
|
* contact@kingsrook.com
|
||||||
|
* https://github.com/Kingsrook/
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Affero General Public License as
|
||||||
|
* published by the Free Software Foundation, either version 3 of the
|
||||||
|
* License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Affero General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.kingsrook.qqq.backend.core.model.tables;
|
||||||
|
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import com.kingsrook.qqq.backend.core.actions.tables.GetAction;
|
||||||
|
import com.kingsrook.qqq.backend.core.actions.tables.InsertAction;
|
||||||
|
import com.kingsrook.qqq.backend.core.context.QContext;
|
||||||
|
import com.kingsrook.qqq.backend.core.exceptions.QException;
|
||||||
|
import com.kingsrook.qqq.backend.core.model.actions.tables.get.GetInput;
|
||||||
|
import com.kingsrook.qqq.backend.core.model.actions.tables.get.GetOutput;
|
||||||
|
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.tables.QTableMetaData;
|
||||||
|
import com.kingsrook.qqq.backend.core.utils.collections.MapBuilder;
|
||||||
|
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
**
|
||||||
|
*******************************************************************************/
|
||||||
|
public class QQQTableAccessor
|
||||||
|
{
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
**
|
||||||
|
*******************************************************************************/
|
||||||
|
public static QRecord getQQQTableRecord(String tableName) throws QException
|
||||||
|
{
|
||||||
|
/////////////////////////////
|
||||||
|
// look in the cache table //
|
||||||
|
/////////////////////////////
|
||||||
|
GetInput getInput = new GetInput();
|
||||||
|
getInput.setTableName(QQQTablesMetaDataProvider.QQQ_TABLE_CACHE_TABLE_NAME);
|
||||||
|
getInput.setUniqueKey(MapBuilder.of("name", tableName));
|
||||||
|
GetOutput getOutput = new GetAction().execute(getInput);
|
||||||
|
|
||||||
|
////////////////////////
|
||||||
|
// upon cache miss... //
|
||||||
|
////////////////////////
|
||||||
|
if(getOutput.getRecord() == null)
|
||||||
|
{
|
||||||
|
///////////////////////////////////////////////////////
|
||||||
|
// insert the record (into the table, not the cache) //
|
||||||
|
///////////////////////////////////////////////////////
|
||||||
|
QTableMetaData tableMetaData = QContext.getQInstance().getTable(tableName);
|
||||||
|
InsertInput insertInput = new InsertInput();
|
||||||
|
insertInput.setTableName(QQQTable.TABLE_NAME);
|
||||||
|
insertInput.setRecords(List.of(new QRecord().withValue("name", tableName).withValue("label", tableMetaData.getLabel())));
|
||||||
|
InsertOutput insertOutput = new InsertAction().execute(insertInput);
|
||||||
|
|
||||||
|
///////////////////////////////////
|
||||||
|
// repeat the get from the cache //
|
||||||
|
///////////////////////////////////
|
||||||
|
getOutput = new GetAction().execute(getInput);
|
||||||
|
}
|
||||||
|
|
||||||
|
return getOutput.getRecord();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
**
|
||||||
|
*******************************************************************************/
|
||||||
|
public static Integer getQQQTableId(String tableName) throws QException
|
||||||
|
{
|
||||||
|
return (getQQQTableRecord(tableName).getValueInteger("id"));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -127,6 +127,7 @@ public class QQQTablesMetaDataProvider
|
|||||||
return (new QPossibleValueSource()
|
return (new QPossibleValueSource()
|
||||||
.withType(QPossibleValueSourceType.TABLE)
|
.withType(QPossibleValueSourceType.TABLE)
|
||||||
.withName(QQQTable.TABLE_NAME)
|
.withName(QQQTable.TABLE_NAME)
|
||||||
|
.withOrderByField("label")
|
||||||
.withTableName(QQQTable.TABLE_NAME));
|
.withTableName(QQQTable.TABLE_NAME));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -44,6 +44,7 @@ import com.kingsrook.qqq.backend.core.model.metadata.code.QCodeReference;
|
|||||||
import com.kingsrook.qqq.backend.core.model.metadata.processes.QBackendStepMetaData;
|
import com.kingsrook.qqq.backend.core.model.metadata.processes.QBackendStepMetaData;
|
||||||
import com.kingsrook.qqq.backend.core.model.metadata.processes.QProcessMetaData;
|
import com.kingsrook.qqq.backend.core.model.metadata.processes.QProcessMetaData;
|
||||||
import com.kingsrook.qqq.backend.core.model.savedfilters.SavedFilter;
|
import com.kingsrook.qqq.backend.core.model.savedfilters.SavedFilter;
|
||||||
|
import com.kingsrook.qqq.backend.core.model.tables.QQQTableAccessor;
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
@ -100,7 +101,7 @@ public class QuerySavedFilterProcess implements BackendStep
|
|||||||
QueryInput input = new QueryInput();
|
QueryInput input = new QueryInput();
|
||||||
input.setTableName(SavedFilter.TABLE_NAME);
|
input.setTableName(SavedFilter.TABLE_NAME);
|
||||||
input.setFilter(new QQueryFilter()
|
input.setFilter(new QQueryFilter()
|
||||||
.withCriteria(new QFilterCriteria("tableName", QCriteriaOperator.EQUALS, tableName))
|
.withCriteria(new QFilterCriteria("qqqTableId", QCriteriaOperator.EQUALS, QQQTableAccessor.getQQQTableId(tableName)))
|
||||||
.withOrderBy(new QFilterOrderBy("label")));
|
.withOrderBy(new QFilterOrderBy("label")));
|
||||||
|
|
||||||
QueryOutput output = new QueryAction().execute(input);
|
QueryOutput output = new QueryAction().execute(input);
|
||||||
|
@ -42,6 +42,7 @@ import com.kingsrook.qqq.backend.core.model.metadata.code.QCodeReference;
|
|||||||
import com.kingsrook.qqq.backend.core.model.metadata.processes.QBackendStepMetaData;
|
import com.kingsrook.qqq.backend.core.model.metadata.processes.QBackendStepMetaData;
|
||||||
import com.kingsrook.qqq.backend.core.model.metadata.processes.QProcessMetaData;
|
import com.kingsrook.qqq.backend.core.model.metadata.processes.QProcessMetaData;
|
||||||
import com.kingsrook.qqq.backend.core.model.savedfilters.SavedFilter;
|
import com.kingsrook.qqq.backend.core.model.savedfilters.SavedFilter;
|
||||||
|
import com.kingsrook.qqq.backend.core.model.tables.QQQTableAccessor;
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
@ -82,7 +83,7 @@ public class StoreSavedFilterProcess implements BackendStep
|
|||||||
QRecord qRecord = new QRecord()
|
QRecord qRecord = new QRecord()
|
||||||
.withValue("id", runBackendStepInput.getValueInteger("id"))
|
.withValue("id", runBackendStepInput.getValueInteger("id"))
|
||||||
.withValue("label", runBackendStepInput.getValueString("label"))
|
.withValue("label", runBackendStepInput.getValueString("label"))
|
||||||
.withValue("tableName", runBackendStepInput.getValueString("tableName"))
|
.withValue("qqqTableId", QQQTableAccessor.getQQQTableId(runBackendStepInput.getValueString("tableName")))
|
||||||
.withValue("filterJson", runBackendStepInput.getValueString("filterJson"))
|
.withValue("filterJson", runBackendStepInput.getValueString("filterJson"))
|
||||||
.withValue("userId", runBackendStepInput.getSession().getUser().getIdReference());
|
.withValue("userId", runBackendStepInput.getSession().getUser().getIdReference());
|
||||||
|
|
||||||
|
@ -30,6 +30,7 @@ import com.kingsrook.qqq.backend.core.model.actions.tables.get.GetInput;
|
|||||||
import com.kingsrook.qqq.backend.core.model.actions.tables.get.GetOutput;
|
import com.kingsrook.qqq.backend.core.model.actions.tables.get.GetOutput;
|
||||||
import com.kingsrook.qqq.backend.core.model.actions.tables.query.QueryInput;
|
import com.kingsrook.qqq.backend.core.model.actions.tables.query.QueryInput;
|
||||||
import com.kingsrook.qqq.backend.core.model.scripts.Script;
|
import com.kingsrook.qqq.backend.core.model.scripts.Script;
|
||||||
|
import com.kingsrook.qqq.backend.core.model.tables.QQQTableAccessor;
|
||||||
import com.kingsrook.qqq.backend.core.processes.implementations.etl.streamedwithfrontend.ExtractViaQueryStep;
|
import com.kingsrook.qqq.backend.core.processes.implementations.etl.streamedwithfrontend.ExtractViaQueryStep;
|
||||||
import com.kingsrook.qqq.backend.core.utils.StringUtils;
|
import com.kingsrook.qqq.backend.core.utils.StringUtils;
|
||||||
|
|
||||||
@ -58,6 +59,11 @@ public class RunRecordScriptExtractStep extends ExtractViaQueryStep
|
|||||||
|
|
||||||
runBackendStepInput.addValue(FIELD_SOURCE_TABLE, tableName);
|
runBackendStepInput.addValue(FIELD_SOURCE_TABLE, tableName);
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////
|
||||||
|
// set this value, for the select-script possible-value filter //
|
||||||
|
/////////////////////////////////////////////////////////////////
|
||||||
|
runBackendStepInput.addValue("qqqTableId", QQQTableAccessor.getQQQTableId(tableName));
|
||||||
|
|
||||||
Integer scriptId = runBackendStepInput.getValueInteger("scriptId");
|
Integer scriptId = runBackendStepInput.getValueInteger("scriptId");
|
||||||
GetInput getInput = new GetInput();
|
GetInput getInput = new GetInput();
|
||||||
getInput.setTableName(Script.TABLE_NAME);
|
getInput.setTableName(Script.TABLE_NAME);
|
||||||
|
@ -0,0 +1,64 @@
|
|||||||
|
/*
|
||||||
|
* QQQ - Low-code Application Framework for Engineers.
|
||||||
|
* Copyright (C) 2021-2023. Kingsrook, LLC
|
||||||
|
* 651 N Broad St Ste 205 # 6917 | Middletown DE 19709 | United States
|
||||||
|
* contact@kingsrook.com
|
||||||
|
* https://github.com/Kingsrook/
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Affero General Public License as
|
||||||
|
* published by the Free Software Foundation, either version 3 of the
|
||||||
|
* License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Affero General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.kingsrook.qqq.backend.core.processes.implementations.scripts;
|
||||||
|
|
||||||
|
|
||||||
|
import com.kingsrook.qqq.backend.core.actions.processes.BackendStep;
|
||||||
|
import com.kingsrook.qqq.backend.core.exceptions.QException;
|
||||||
|
import com.kingsrook.qqq.backend.core.model.actions.processes.RunBackendStepInput;
|
||||||
|
import com.kingsrook.qqq.backend.core.model.actions.processes.RunBackendStepOutput;
|
||||||
|
import com.kingsrook.qqq.backend.core.model.tables.QQQTableAccessor;
|
||||||
|
import com.kingsrook.qqq.backend.core.processes.implementations.etl.streamed.StreamedETLProcess;
|
||||||
|
import com.kingsrook.qqq.backend.core.utils.StringUtils;
|
||||||
|
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
** pre-step for the run-record-script process. Help deal with this being
|
||||||
|
** a generic process (e.g., no table name defined in the meta data).
|
||||||
|
*******************************************************************************/
|
||||||
|
public class RunRecordScriptPreStep implements BackendStep
|
||||||
|
{
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
**
|
||||||
|
*******************************************************************************/
|
||||||
|
@Override
|
||||||
|
public void run(RunBackendStepInput runBackendStepInput, RunBackendStepOutput runBackendStepOutput) throws QException
|
||||||
|
{
|
||||||
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// this is a generic (e.g., not table-specific) process - so we must be sure to set the tableName field in the expected slot. //
|
||||||
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
String tableName = runBackendStepInput.getValueString("tableName");
|
||||||
|
if(!StringUtils.hasContent(tableName))
|
||||||
|
{
|
||||||
|
throw (new QException("Table name was not specified as input value"));
|
||||||
|
}
|
||||||
|
|
||||||
|
runBackendStepInput.addValue(StreamedETLProcess.FIELD_SOURCE_TABLE, tableName);
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////
|
||||||
|
// set this value, for the select-script possible-value filter //
|
||||||
|
/////////////////////////////////////////////////////////////////
|
||||||
|
runBackendStepInput.addValue("qqqTableId", QQQTableAccessor.getQQQTableId(tableName));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -71,7 +71,7 @@ class TestScriptProcessStepTest extends BaseTest
|
|||||||
insertInput.setRecords(List.of(new Script()
|
insertInput.setRecords(List.of(new Script()
|
||||||
.withName("TestScript")
|
.withName("TestScript")
|
||||||
.withScriptTypeId(insertOutput.getRecords().get(0).getValueInteger("id"))
|
.withScriptTypeId(insertOutput.getRecords().get(0).getValueInteger("id"))
|
||||||
.withTableName(TestUtils.TABLE_NAME_SHAPE)
|
.withQqqTableId(1)
|
||||||
.toQRecord()));
|
.toQRecord()));
|
||||||
insertOutput = new InsertAction().execute(insertInput);
|
insertOutput = new InsertAction().execute(insertInput);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user