diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/scripts/StoreAssociatedScriptAction.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/scripts/StoreAssociatedScriptAction.java index 5014caa2..07939db4 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/scripts/StoreAssociatedScriptAction.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/scripts/StoreAssociatedScriptAction.java @@ -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")); } } diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/scripts/StoreAssociatedScriptActionTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/scripts/StoreAssociatedScriptActionTest.java index 5bca2fea..8018d686 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/scripts/StoreAssociatedScriptActionTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/actions/scripts/StoreAssociatedScriptActionTest.java @@ -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); }