mirror of
https://github.com/Kingsrook/qqq.git
synced 2025-07-18 05:01:07 +00:00
Updating to support multi-file scripts
This commit is contained in:
@ -31,6 +31,8 @@ import com.kingsrook.qqq.backend.core.actions.tables.InsertAction;
|
||||
import com.kingsrook.qqq.backend.core.actions.tables.QueryAction;
|
||||
import com.kingsrook.qqq.backend.core.actions.tables.UpdateAction;
|
||||
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.actions.scripts.StoreAssociatedScriptInput;
|
||||
import com.kingsrook.qqq.backend.core.model.actions.scripts.StoreAssociatedScriptOutput;
|
||||
import com.kingsrook.qqq.backend.core.model.actions.tables.get.GetInput;
|
||||
@ -47,6 +49,7 @@ import com.kingsrook.qqq.backend.core.model.actions.tables.update.UpdateInput;
|
||||
import com.kingsrook.qqq.backend.core.model.data.QRecord;
|
||||
import com.kingsrook.qqq.backend.core.model.metadata.tables.AssociatedScript;
|
||||
import com.kingsrook.qqq.backend.core.model.metadata.tables.QTableMetaData;
|
||||
import com.kingsrook.qqq.backend.core.processes.implementations.scripts.StoreScriptRevisionProcessStep;
|
||||
import com.kingsrook.qqq.backend.core.utils.StringUtils;
|
||||
|
||||
|
||||
@ -180,41 +183,19 @@ public class StoreAssociatedScriptAction
|
||||
}
|
||||
}
|
||||
|
||||
QRecord scriptRevision = new QRecord()
|
||||
.withValue("scriptId", script.getValue("id"))
|
||||
.withValue("contents", input.getCode())
|
||||
.withValue("apiName", input.getApiName())
|
||||
.withValue("apiVersion", input.getApiVersion())
|
||||
.withValue("commitMessage", commitMessage)
|
||||
.withValue("sequenceNo", nextSequenceNo);
|
||||
|
||||
try
|
||||
{
|
||||
scriptRevision.setValue("author", input.getSession().getUser().getFullName());
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
scriptRevision.setValue("author", "Unknown");
|
||||
}
|
||||
|
||||
InsertInput insertInput = new InsertInput();
|
||||
insertInput.setTableName("scriptRevision");
|
||||
insertInput.setRecords(List.of(scriptRevision));
|
||||
InsertOutput insertOutput = new InsertAction().execute(insertInput);
|
||||
scriptRevision = insertOutput.getRecords().get(0);
|
||||
|
||||
////////////////////////////////////////////////////
|
||||
// update the script to point at the new revision //
|
||||
////////////////////////////////////////////////////
|
||||
script.setValue("currentScriptRevisionId", scriptRevision.getValue("id"));
|
||||
UpdateInput updateInput = new UpdateInput();
|
||||
updateInput.setTableName("script");
|
||||
updateInput.setRecords(List.of(script));
|
||||
new UpdateAction().execute(updateInput);
|
||||
RunBackendStepInput storeScriptRevisionInput = new RunBackendStepInput();
|
||||
storeScriptRevisionInput.addValue("scriptId", script.getValue("id"));
|
||||
storeScriptRevisionInput.addValue("commitMessage", commitMessage);
|
||||
storeScriptRevisionInput.addValue("apiName", input.getApiName());
|
||||
storeScriptRevisionInput.addValue("apiVersion", input.getApiVersion());
|
||||
storeScriptRevisionInput.addValue("fileNames", "script");
|
||||
storeScriptRevisionInput.addValue("fileContents:script", input.getCode());
|
||||
RunBackendStepOutput storeScriptRevisionOutput = new RunBackendStepOutput();
|
||||
new StoreScriptRevisionProcessStep().run(storeScriptRevisionInput, storeScriptRevisionOutput);
|
||||
|
||||
output.setScriptId(script.getValueInteger("id"));
|
||||
output.setScriptName(script.getValueString("name"));
|
||||
output.setScriptRevisionId(scriptRevision.getValueInteger("id"));
|
||||
output.setScriptRevisionSequenceNo(scriptRevision.getValueInteger("sequenceNo"));
|
||||
output.setScriptRevisionId(storeScriptRevisionOutput.getValueInteger("scriptRevisionId"));
|
||||
output.setScriptRevisionSequenceNo(storeScriptRevisionOutput.getValueInteger("scriptRevisionSequenceNo"));
|
||||
}
|
||||
}
|
||||
|
@ -38,6 +38,8 @@ 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.AssociatedScript;
|
||||
import com.kingsrook.qqq.backend.core.model.metadata.tables.QTableMetaData;
|
||||
import com.kingsrook.qqq.backend.core.model.scripts.Script;
|
||||
import com.kingsrook.qqq.backend.core.model.scripts.ScriptRevisionFile;
|
||||
import com.kingsrook.qqq.backend.core.model.scripts.ScriptsMetaDataProvider;
|
||||
import com.kingsrook.qqq.backend.core.modules.backend.implementations.memory.MemoryRecordStore;
|
||||
import com.kingsrook.qqq.backend.core.utils.TestUtils;
|
||||
@ -100,7 +102,8 @@ class StoreAssociatedScriptActionTest extends BaseTest
|
||||
StoreAssociatedScriptInput storeAssociatedScriptInput = new StoreAssociatedScriptInput();
|
||||
storeAssociatedScriptInput.setTableName(TestUtils.TABLE_NAME_PERSON_MEMORY);
|
||||
storeAssociatedScriptInput.setRecordPrimaryKey(1);
|
||||
storeAssociatedScriptInput.setCode("var i = 0;");
|
||||
String code = "var i = 0;";
|
||||
storeAssociatedScriptInput.setCode(code);
|
||||
storeAssociatedScriptInput.setCommitMessage("Test commit");
|
||||
storeAssociatedScriptInput.setFieldName("testScriptId");
|
||||
StoreAssociatedScriptOutput storeAssociatedScriptOutput = new StoreAssociatedScriptOutput();
|
||||
@ -110,26 +113,33 @@ class StoreAssociatedScriptActionTest extends BaseTest
|
||||
///////////////////////////////////////////////
|
||||
new StoreAssociatedScriptAction().run(storeAssociatedScriptInput, storeAssociatedScriptOutput);
|
||||
assertValueInField(instance, TestUtils.TABLE_NAME_PERSON_MEMORY, 1, "testScriptId", 1);
|
||||
assertValueInField(instance, "script", 1, "currentScriptRevisionId", 1);
|
||||
assertValueInField(instance, Script.TABLE_NAME, 1, "currentScriptRevisionId", 1);
|
||||
assertValueInField(instance, ScriptRevisionFile.TABLE_NAME, 1, "contents", code);
|
||||
|
||||
////////////////////////////////////////////
|
||||
// add 2nd version of script for record 1 //
|
||||
////////////////////////////////////////////
|
||||
storeAssociatedScriptInput.setCode("var i = 1;");
|
||||
code = "var i = 1;";
|
||||
storeAssociatedScriptInput.setCode(code);
|
||||
storeAssociatedScriptInput.setCommitMessage("2nd commit");
|
||||
new StoreAssociatedScriptAction().run(storeAssociatedScriptInput, storeAssociatedScriptOutput);
|
||||
assertValueInField(instance, TestUtils.TABLE_NAME_PERSON_MEMORY, 1, "testScriptId", 1);
|
||||
assertValueInField(instance, "script", 1, "currentScriptRevisionId", 2);
|
||||
assertValueInField(instance, Script.TABLE_NAME, 1, "currentScriptRevisionId", 2);
|
||||
assertValueInField(instance, ScriptRevisionFile.TABLE_NAME, 2, "contents", code);
|
||||
assertValueInField(instance, ScriptRevisionFile.TABLE_NAME, 2, "scriptRevisionId", 2);
|
||||
|
||||
///////////////////////////////////////////////
|
||||
// insert 1st version of script for record 3 //
|
||||
///////////////////////////////////////////////
|
||||
code = "var i = 2;";
|
||||
storeAssociatedScriptInput.setRecordPrimaryKey(3);
|
||||
storeAssociatedScriptInput.setCode("var i = 2;");
|
||||
storeAssociatedScriptInput.setCode(code);
|
||||
storeAssociatedScriptInput.setCommitMessage("First Commit here");
|
||||
new StoreAssociatedScriptAction().run(storeAssociatedScriptInput, storeAssociatedScriptOutput);
|
||||
assertValueInField(instance, TestUtils.TABLE_NAME_PERSON_MEMORY, 3, "testScriptId", 2);
|
||||
assertValueInField(instance, "script", 2, "currentScriptRevisionId", 3);
|
||||
assertValueInField(instance, Script.TABLE_NAME, 2, "currentScriptRevisionId", 3);
|
||||
assertValueInField(instance, ScriptRevisionFile.TABLE_NAME, 3, "contents", code);
|
||||
assertValueInField(instance, ScriptRevisionFile.TABLE_NAME, 3, "scriptRevisionId", 3);
|
||||
|
||||
/////////////////////////////////////
|
||||
// make sure no script on record 2 //
|
||||
@ -146,7 +156,7 @@ class StoreAssociatedScriptActionTest extends BaseTest
|
||||
new StoreAssociatedScriptAction().run(storeAssociatedScriptInput, storeAssociatedScriptOutput);
|
||||
assertValueInField(instance, TestUtils.TABLE_NAME_PERSON_MEMORY, 1, "testScriptId", 1);
|
||||
assertValueInField(instance, TestUtils.TABLE_NAME_PERSON_MEMORY, 1, "otherScriptId", 3);
|
||||
assertValueInField(instance, "script", 3, "currentScriptRevisionId", 4);
|
||||
assertValueInField(instance, Script.TABLE_NAME, 3, "currentScriptRevisionId", 4);
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user