From 347b2abf4f5e6cfa65d29b3c24ebcf45c9ce51d8 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Fri, 18 Jun 2021 18:07:51 +0100 Subject: [PATCH 1/4] Adding a server logging script for testing and updating automation script functionality so that you can use 'return trigger.row.firstName' and it'll function as expected. --- packages/server/src/api/controllers/script.js | 6 ++- packages/server/src/automations/actions.js | 3 ++ .../server/src/automations/steps/serverLog.js | 41 +++++++++++++++++++ 3 files changed, 48 insertions(+), 2 deletions(-) create mode 100644 packages/server/src/automations/steps/serverLog.js diff --git a/packages/server/src/api/controllers/script.js b/packages/server/src/api/controllers/script.js index 3f110a2764..f312472801 100644 --- a/packages/server/src/api/controllers/script.js +++ b/packages/server/src/api/controllers/script.js @@ -3,13 +3,15 @@ const vm = require("vm") class ScriptExecutor { constructor(body) { - this.script = new vm.Script(body.script) + const code = `let fn = () => {\n${body.script}\n}; out = fn();` + this.script = new vm.Script(code) this.context = vm.createContext(body.context) this.context.fetch = fetch } execute() { - return this.script.runInContext(this.context) + this.script.runInContext(this.context) + return this.context.out } } diff --git a/packages/server/src/automations/actions.js b/packages/server/src/automations/actions.js index 762ce677a7..b0b5f9f1ba 100644 --- a/packages/server/src/automations/actions.js +++ b/packages/server/src/automations/actions.js @@ -7,6 +7,7 @@ const executeScript = require("./steps/executeScript") const bash = require("./steps/bash") const executeQuery = require("./steps/executeQuery") const outgoingWebhook = require("./steps/outgoingWebhook") +const serverLog = require("./steps/serverLog") const env = require("../environment") const Sentry = require("@sentry/node") const { @@ -24,6 +25,7 @@ const BUILTIN_ACTIONS = { EXECUTE_SCRIPT: executeScript.run, EXECUTE_BASH: bash.run, EXECUTE_QUERY: executeQuery.run, + SERVER_LOG: serverLog.run, } const BUILTIN_DEFINITIONS = { SEND_EMAIL: sendgridEmail.definition, @@ -35,6 +37,7 @@ const BUILTIN_DEFINITIONS = { EXECUTE_SCRIPT: executeScript.definition, EXECUTE_QUERY: executeQuery.definition, EXECUTE_BASH: bash.definition, + SERVER_LOG: serverLog.definition, } let MANIFEST = null diff --git a/packages/server/src/automations/steps/serverLog.js b/packages/server/src/automations/steps/serverLog.js new file mode 100644 index 0000000000..a98e87235c --- /dev/null +++ b/packages/server/src/automations/steps/serverLog.js @@ -0,0 +1,41 @@ +/** + * Note, there is some functionality in this that is not currently exposed as it + * is complex and maybe better to be opinionated here. + * GET/DELETE requests cannot handle body elements so they will not be sent if configured. + */ + +module.exports.definition = { + name: "Backend log", + tagline: "Console log a value in the backend", + icon: "ri-server-line", + description: "Logs the given text to the server (using console.log)", + type: "ACTION", + stepId: "SERVER_LOG", + inputs: { + text: "", + }, + schema: { + inputs: { + properties: { + text: { + type: "string", + title: "URL", + }, + }, + required: ["text"], + }, + outputs: { + properties: { + success: { + type: "boolean", + description: "Whether the action was successful", + }, + }, + required: ["success"], + }, + }, +} + +module.exports.run = async function ({ inputs, appId }) { + console.log(`App ${appId} - ${inputs.text}`) +} \ No newline at end of file From 9afd7fb57a7abf694a05272154cff8c1dddf72ef Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Fri, 18 Jun 2021 18:34:58 +0100 Subject: [PATCH 2/4] Linting. --- packages/server/src/automations/steps/serverLog.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/server/src/automations/steps/serverLog.js b/packages/server/src/automations/steps/serverLog.js index a98e87235c..c28309c5c8 100644 --- a/packages/server/src/automations/steps/serverLog.js +++ b/packages/server/src/automations/steps/serverLog.js @@ -38,4 +38,4 @@ module.exports.definition = { module.exports.run = async function ({ inputs, appId }) { console.log(`App ${appId} - ${inputs.text}`) -} \ No newline at end of file +} From 052d14ad38335ee0c50fafa6630d29c543026901 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Sun, 20 Jun 2021 10:53:55 +0100 Subject: [PATCH 3/4] Fixing issue with 1:N relationships and multiple fields, issue #1753. --- packages/server/src/db/linkedRows/LinkController.js | 4 ++-- packages/worker/src/api/routes/tests/realEmail.spec.js | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/server/src/db/linkedRows/LinkController.js b/packages/server/src/db/linkedRows/LinkController.js index 53ce8e45ad..cba4386105 100644 --- a/packages/server/src/db/linkedRows/LinkController.js +++ b/packages/server/src/db/linkedRows/LinkController.js @@ -211,14 +211,14 @@ class LinkController { // iterate through the link IDs in the row field, see if any don't exist already for (let linkId of rowField) { if (linkedSchema.relationshipType === RelationshipTypes.ONE_TO_MANY) { - const links = ( + let links = ( await getLinkDocuments({ appId: this._appId, tableId: field.tableId, rowId: linkId, includeDocs: IncludeDocs.EXCLUDE, }) - ).filter(link => link.id !== row._id) + ).filter(link => link.id !== row._id && link.fieldName === linkedSchema.name) // The 1 side of 1:N is already related to something else // You must remove the existing relationship diff --git a/packages/worker/src/api/routes/tests/realEmail.spec.js b/packages/worker/src/api/routes/tests/realEmail.spec.js index 8c23141a53..acc0c7acc9 100644 --- a/packages/worker/src/api/routes/tests/realEmail.spec.js +++ b/packages/worker/src/api/routes/tests/realEmail.spec.js @@ -53,7 +53,6 @@ describe("/api/admin/email", () => { it("should be able to send a welcome email", async () => { await sendRealEmail(EmailTemplatePurpose.WELCOME) - }) it("should be able to send a invitation email", async () => { From 47fb67ebfcee14b7a2a0cb73bc6f24140792c2e7 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Sun, 20 Jun 2021 10:55:12 +0100 Subject: [PATCH 4/4] Linting. --- packages/server/src/db/linkedRows/LinkController.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/server/src/db/linkedRows/LinkController.js b/packages/server/src/db/linkedRows/LinkController.js index cba4386105..c8331dec6b 100644 --- a/packages/server/src/db/linkedRows/LinkController.js +++ b/packages/server/src/db/linkedRows/LinkController.js @@ -218,7 +218,10 @@ class LinkController { rowId: linkId, includeDocs: IncludeDocs.EXCLUDE, }) - ).filter(link => link.id !== row._id && link.fieldName === linkedSchema.name) + ).filter( + link => + link.id !== row._id && link.fieldName === linkedSchema.name + ) // The 1 side of 1:N is already related to something else // You must remove the existing relationship