export type WorkflowTemplateType = typeof workflowTemplate; export const workflowTemplate = [ { block: { pluginId: "startTrigger", incomingOnSuccessPlugins: [], comment: { body: 'This workflow supports performing CRUD operations on a Retool DB instance. Example valid JSON inputs:\n\n{\n type: "create",\n data:{ col1: "val1", col2: "val2"}\n}\n\n{\n type: "read"\n}\n\n{\n type: "update",\n row: id,\n data:{ col1: "val1", col2: "val2"}\n}\n\n{\n type: "destroy",\n row: id\n}', visible: true, pluginId: "startTrigger-comment", }, top: 0, left: -432, environment: "production", editorType: "JavascriptQuery", resourceName: "webhook", blockType: "webhook", }, pluginTemplate: { id: "startTrigger", type: "datasource", subtype: "JavascriptQuery", resourceName: "JavascriptQuery", template: { queryRefreshTime: "", lastReceivedFromResourceAt: null, queryDisabledMessage: "", servedFromCache: false, offlineUserQueryInputs: "", successMessage: "", queryDisabled: "", playgroundQuerySaveId: "latest", workflowParams: null, resourceNameOverride: "", runWhenModelUpdates: false, workflowRunId: null, showFailureToaster: true, query: 'return {\n type: "read"\n}', playgroundQueryUuid: "", playgroundQueryId: null, error: null, workflowRunBodyType: "raw", privateParams: [], runWhenPageLoadsDelay: "", data: null, importedQueryInputs: {}, _additionalScope: [], isImported: false, showSuccessToaster: true, cacheKeyTtl: "", requestSentTimestamp: null, metadata: null, workflowActionType: null, queryRunTime: null, changesetObject: "", errorTransformer: "// The variable 'data' allows you to reference the request's data in the transformer. \n// example: return data.find(element => element.isError)\nreturn data.error", finished: null, confirmationMessage: null, isFetching: false, changeset: "", rawData: null, queryTriggerDelay: "0", watchedParams: [], enableErrorTransformer: false, showLatestVersionUpdatedWarning: false, timestamp: 0, evalType: "script", importedQueryDefaults: {}, enableTransformer: false, showUpdateSetValueDynamicallyToggle: true, runWhenPageLoads: false, transformer: "// Query results are available as the `data` variable\nreturn formatDataAsArray(data)", events: [], queryTimeout: "10000", workflowId: null, requireConfirmation: false, queryFailureConditions: "", changesetIsObject: false, enableCaching: false, allowedGroups: [], workflowBlockPluginId: null, offlineQueryType: "None", queryThrottleTime: "750", updateSetValueDynamically: false, notificationDuration: "", }, }, }, { block: { pluginId: "createQuery", incomingOnSuccessPlugins: [], top: -640, left: 1040, environment: "production", editorType: "SqlQueryUnified", resourceName: "", blockType: "default", incomingPortsPlugins: [ { blockPluginId: "switchType", portId: "a620f4c4-57db-4732-9176-934bcf9b94a8", }, ], }, pluginTemplate: { id: "createQuery", type: "datasource", subtype: "SqlQueryUnified", resourceName: null, template: { queryRefreshTime: "", records: "", lastReceivedFromResourceAt: null, databasePasswordOverride: "", queryDisabledMessage: "", servedFromCache: false, offlineUserQueryInputs: "", successMessage: "", queryDisabled: "", playgroundQuerySaveId: "latest", workflowParams: null, resourceNameOverride: "", runWhenModelUpdates: false, workflowRunId: null, showFailureToaster: true, query: "", playgroundQueryUuid: "", playgroundQueryId: null, error: null, workflowRunBodyType: "raw", privateParams: [], runWhenPageLoadsDelay: "", warningCodes: [], data: null, recordId: "", importedQueryInputs: {}, isImported: false, showSuccessToaster: true, dataArray: [], cacheKeyTtl: "", filterBy: "", requestSentTimestamp: null, databaseHostOverride: "", metadata: null, workflowActionType: null, editorMode: "gui", queryRunTime: null, actionType: "INSERT", changesetObject: "{{startTrigger.data.data}}", shouldUseLegacySql: false, errorTransformer: "// The variable 'data' allows you to reference the request's data in the transformer. \n// example: return data.find(element => element.isError)\nreturn data.error", finished: null, databaseNameOverride: "", confirmationMessage: null, isFetching: false, changeset: "", rawData: null, queryTriggerDelay: "0", resourceTypeOverride: "postgresql", watchedParams: [], enableErrorTransformer: false, enableBulkUpdates: false, showLatestVersionUpdatedWarning: false, timestamp: 0, evalType: "script", importedQueryDefaults: {}, enableTransformer: false, showUpdateSetValueDynamicallyToggle: true, bulkUpdatePrimaryKey: "", runWhenPageLoads: false, transformer: "// Query results are available as the `data` variable\nreturn formatDataAsArray(data)", events: [], tableName: "name_placeholder", queryTimeout: "120000", workflowId: null, requireConfirmation: false, queryFailureConditions: "", changesetIsObject: true, enableCaching: false, allowedGroups: [], workflowBlockPluginId: null, databaseUsernameOverride: "", shouldEnableBatchQuerying: false, doNotThrowOnNoOp: false, offlineQueryType: "None", queryThrottleTime: "750", updateSetValueDynamically: false, notificationDuration: "", }, }, }, { block: { pluginId: "switchType", incomingOnSuccessPlugins: [], top: 0, left: 528, environment: "production", editorType: "JavascriptQuery", resourceName: "JavascriptQuery", blockType: "conditional", options: { conditions: [ { id: "4a38580b-830a-4f7b-9c3f-503bf1a0ed6d", type: "if", statement: 'startTrigger.data.type === "create"', outgoingPortId: "a620f4c4-57db-4732-9176-934bcf9b94a8", }, { id: "5a1e5f9a-ac0e-4b7d-83d9-2ec42d766fb7", type: "if", statement: 'startTrigger.data.type === "read"', outgoingPortId: "75cf13b9-ac7e-47b2-a48d-518ec1094659", }, { id: "42309937-c622-40bc-8d17-7b302e063b23", type: "if", statement: 'startTrigger.data.type === "update"', outgoingPortId: "7d59ff82-a70b-4fe8-a6c8-3253898cf1a6", }, { id: "756ce9dc-9a06-4460-bf83-f4579d255dcc", type: "if", statement: 'startTrigger.data.type === "destroy"', outgoingPortId: "221b4d5d-fb16-4581-9b71-f95ef77c66d0", }, { id: "41fd9758-049c-47b3-8d32-77c4399808c7", type: "else", statement: "", outgoingPortId: "12676e07-8c10-4bb5-914a-98e6608a386e", }, ], }, outgoingPorts: [ { id: "a620f4c4-57db-4732-9176-934bcf9b94a8", name: "0", type: "conditional", }, { id: "75cf13b9-ac7e-47b2-a48d-518ec1094659", name: "1", type: "conditional", }, { id: "7d59ff82-a70b-4fe8-a6c8-3253898cf1a6", name: "2", type: "conditional", }, { id: "221b4d5d-fb16-4581-9b71-f95ef77c66d0", name: "3", type: "conditional", }, { id: "12676e07-8c10-4bb5-914a-98e6608a386e", name: "4", type: "conditional", }, ], incomingPortsPlugins: [ { blockPluginId: "filterBadRequest", portId: "c7a9d846-836e-4fbd-87af-3d76aa66715c", }, ], }, pluginTemplate: { id: "switchType", type: "datasource", subtype: "JavascriptQuery", resourceName: "JavascriptQuery", template: { queryRefreshTime: "", lastReceivedFromResourceAt: null, queryDisabledMessage: "", servedFromCache: false, offlineUserQueryInputs: "", successMessage: "", queryDisabled: "", playgroundQuerySaveId: "latest", workflowParams: null, resourceNameOverride: "", runWhenModelUpdates: false, workflowRunId: null, showFailureToaster: true, query: "if (startTrigger.data.type === \"create\") {\n executePathAtMostOnce('0')\n}\nelse if (startTrigger.data.type === \"read\") {\n executePathAtMostOnce('1')\n}\nelse if (startTrigger.data.type === \"update\") {\n executePathAtMostOnce('2')\n}\nelse if (startTrigger.data.type === \"destroy\") {\n executePathAtMostOnce('3')\n}\nelse { executePathAtMostOnce('4') }", playgroundQueryUuid: "", playgroundQueryId: null, error: null, workflowRunBodyType: "raw", privateParams: [], runWhenPageLoadsDelay: "", data: null, importedQueryInputs: {}, _additionalScope: [], isImported: false, showSuccessToaster: true, cacheKeyTtl: "", requestSentTimestamp: null, metadata: null, workflowActionType: null, editorMode: "sql", queryRunTime: null, changesetObject: "", errorTransformer: "// The variable 'data' allows you to reference the request's data in the transformer. \n// example: return data.find(element => element.isError)\nreturn data.error", finished: null, confirmationMessage: null, isFetching: false, changeset: "", rawData: null, queryTriggerDelay: "0", watchedParams: [], enableErrorTransformer: false, showLatestVersionUpdatedWarning: false, timestamp: 0, evalType: "script", importedQueryDefaults: {}, enableTransformer: false, showUpdateSetValueDynamicallyToggle: true, runWhenPageLoads: false, transformer: "// Query results are available as the `data` variable\nreturn formatDataAsArray(data)", events: [], queryTimeout: "10000", workflowId: null, requireConfirmation: false, queryFailureConditions: "", changesetIsObject: false, enableCaching: false, allowedGroups: [], workflowBlockPluginId: null, offlineQueryType: "None", queryThrottleTime: "750", updateSetValueDynamically: false, notificationDuration: "", }, }, }, { block: { pluginId: "readQuery", incomingOnSuccessPlugins: [], top: -240, left: 1040, environment: "production", editorType: "SqlQueryUnified", resourceName: "", blockType: "default", incomingPortsPlugins: [ { blockPluginId: "switchType", portId: "75cf13b9-ac7e-47b2-a48d-518ec1094659", }, ], }, pluginTemplate: { id: "readQuery", type: "datasource", subtype: "SqlQueryUnified", resourceName: null, template: { queryRefreshTime: "", records: "", lastReceivedFromResourceAt: null, databasePasswordOverride: "", queryDisabledMessage: "", servedFromCache: false, offlineUserQueryInputs: "", successMessage: "", queryDisabled: "", playgroundQuerySaveId: "latest", workflowParams: null, resourceNameOverride: "", runWhenModelUpdates: false, workflowRunId: null, showFailureToaster: true, query: "SELECT * from name_placeholder", playgroundQueryUuid: "", playgroundQueryId: null, error: null, workflowRunBodyType: "raw", privateParams: [], runWhenPageLoadsDelay: "", warningCodes: [], data: null, recordId: "", importedQueryInputs: {}, isImported: false, showSuccessToaster: true, dataArray: [], cacheKeyTtl: "", filterBy: "", requestSentTimestamp: null, databaseHostOverride: "", metadata: null, workflowActionType: null, editorMode: "sql", queryRunTime: null, actionType: "", changesetObject: "", shouldUseLegacySql: false, errorTransformer: "// The variable 'data' allows you to reference the request's data in the transformer. \n// example: return data.find(element => element.isError)\nreturn data.error", finished: null, databaseNameOverride: "", confirmationMessage: null, isFetching: false, changeset: "", rawData: null, queryTriggerDelay: "0", resourceTypeOverride: "postgresql", watchedParams: [], enableErrorTransformer: false, enableBulkUpdates: false, showLatestVersionUpdatedWarning: false, timestamp: 0, evalType: "script", importedQueryDefaults: {}, enableTransformer: false, showUpdateSetValueDynamicallyToggle: true, bulkUpdatePrimaryKey: "", runWhenPageLoads: false, transformer: "// Query results are available as the `data` variable\nreturn formatDataAsArray(data)", events: [], tableName: "name_placeholder", queryTimeout: "120000", workflowId: null, requireConfirmation: false, queryFailureConditions: "", changesetIsObject: false, enableCaching: false, allowedGroups: [], workflowBlockPluginId: null, databaseUsernameOverride: "", shouldEnableBatchQuerying: false, doNotThrowOnNoOp: false, offlineQueryType: "None", queryThrottleTime: "750", updateSetValueDynamically: false, notificationDuration: "", }, }, }, { block: { pluginId: "updateQuery", incomingOnSuccessPlugins: [], top: 144, left: 1056, environment: "production", editorType: "SqlQueryUnified", resourceName: "", blockType: "default", incomingPortsPlugins: [ { blockPluginId: "switchType", portId: "7d59ff82-a70b-4fe8-a6c8-3253898cf1a6", }, ], }, pluginTemplate: { id: "updateQuery", type: "datasource", subtype: "SqlQueryUnified", resourceName: null, template: { queryRefreshTime: "", records: "", lastReceivedFromResourceAt: null, databasePasswordOverride: "", queryDisabledMessage: "", servedFromCache: false, offlineUserQueryInputs: "", successMessage: "", queryDisabled: "", playgroundQuerySaveId: "latest", workflowParams: null, resourceNameOverride: "", runWhenModelUpdates: false, workflowRunId: null, showFailureToaster: true, query: "-- Delete query goes here", playgroundQueryUuid: "", playgroundQueryId: null, error: null, workflowRunBodyType: "raw", privateParams: [], runWhenPageLoadsDelay: "", warningCodes: [], data: null, recordId: "", importedQueryInputs: {}, isImported: false, showSuccessToaster: true, dataArray: [], cacheKeyTtl: "", filterBy: '[{"key":"id","value":"{{startTrigger.data.row}}","operation":"="}]', requestSentTimestamp: null, databaseHostOverride: "", metadata: null, workflowActionType: null, editorMode: "gui", queryRunTime: null, actionType: "UPDATE_BY", changesetObject: "{{startTrigger.data.data}}", shouldUseLegacySql: false, errorTransformer: "// The variable 'data' allows you to reference the request's data in the transformer. \n// example: return data.find(element => element.isError)\nreturn data.error", finished: null, databaseNameOverride: "", confirmationMessage: null, isFetching: false, changeset: "", rawData: null, queryTriggerDelay: "0", resourceTypeOverride: "postgresql", watchedParams: [], enableErrorTransformer: false, enableBulkUpdates: false, showLatestVersionUpdatedWarning: false, timestamp: 0, evalType: "script", importedQueryDefaults: {}, enableTransformer: false, showUpdateSetValueDynamicallyToggle: true, bulkUpdatePrimaryKey: "", runWhenPageLoads: false, transformer: "// Query results are available as the `data` variable\nreturn formatDataAsArray(data)", events: [], tableName: "name_placeholder", queryTimeout: "120000", workflowId: null, requireConfirmation: false, queryFailureConditions: "", changesetIsObject: true, enableCaching: false, allowedGroups: [], workflowBlockPluginId: null, databaseUsernameOverride: "", shouldEnableBatchQuerying: false, doNotThrowOnNoOp: false, offlineQueryType: "None", queryThrottleTime: "750", updateSetValueDynamically: false, notificationDuration: "", }, }, }, { block: { pluginId: "createReturn", incomingOnSuccessPlugins: ["createQuery"], top: -640, left: 1472, environment: "production", editorType: "JavascriptQuery", resourceName: "JavascriptQuery", blockType: "webhookReturn", options: { body: "{\n data: createQuery.data,\n error: createQuery.error\n }", status: "200", }, }, pluginTemplate: { id: "createReturn", type: "datasource", subtype: "JavascriptQuery", resourceName: "JavascriptQuery", template: { queryRefreshTime: "", lastReceivedFromResourceAt: null, queryDisabledMessage: "", servedFromCache: false, offlineUserQueryInputs: "", successMessage: "", queryDisabled: "", playgroundQuerySaveId: "latest", workflowParams: null, resourceNameOverride: "", runWhenModelUpdates: false, workflowRunId: null, showFailureToaster: true, query: "const generateReturn = () => {\n const status = () => {\n try {\n return 200\n } catch {\n return 200\n }\n }\n const body = () => {\n try {\n return {\n data: createQuery.data,\n error: createQuery.error\n }\n } catch {\n return {'error': true, 'messsage': 'there was a problem parsing the JSON body of createReturn'}\n }\n }\n return {status: status(), body: body() }\n }\n return generateReturn()\n ", playgroundQueryUuid: "", playgroundQueryId: null, error: null, workflowRunBodyType: "raw", privateParams: [], runWhenPageLoadsDelay: "", data: null, importedQueryInputs: {}, _additionalScope: [], isImported: false, showSuccessToaster: true, cacheKeyTtl: "", requestSentTimestamp: null, metadata: null, workflowActionType: null, editorMode: "sql", queryRunTime: null, changesetObject: "", errorTransformer: "// The variable 'data' allows you to reference the request's data in the transformer. \n// example: return data.find(element => element.isError)\nreturn data.error", finished: null, confirmationMessage: null, isFetching: false, changeset: "", rawData: null, queryTriggerDelay: "0", watchedParams: [], enableErrorTransformer: false, showLatestVersionUpdatedWarning: false, timestamp: 0, evalType: "script", importedQueryDefaults: {}, enableTransformer: false, showUpdateSetValueDynamicallyToggle: true, runWhenPageLoads: false, transformer: "// Query results are available as the `data` variable\nreturn formatDataAsArray(data)", events: [], queryTimeout: "10000", workflowId: null, requireConfirmation: false, queryFailureConditions: "", changesetIsObject: false, enableCaching: false, allowedGroups: [], workflowBlockPluginId: null, offlineQueryType: "None", queryThrottleTime: "750", updateSetValueDynamically: false, notificationDuration: "", }, }, }, { block: { pluginId: "readReturn", incomingOnSuccessPlugins: ["readQuery"], top: -240, left: 1488, environment: "production", editorType: "JavascriptQuery", resourceName: "JavascriptQuery", blockType: "webhookReturn", options: { body: "{\n data: readQuery.data,\n error: readQuery.error\n }", status: "200", }, }, pluginTemplate: { id: "readReturn", type: "datasource", subtype: "JavascriptQuery", resourceName: "JavascriptQuery", template: { queryRefreshTime: "", lastReceivedFromResourceAt: null, queryDisabledMessage: "", servedFromCache: false, offlineUserQueryInputs: "", successMessage: "", queryDisabled: "", playgroundQuerySaveId: "latest", workflowParams: null, resourceNameOverride: "", runWhenModelUpdates: false, workflowRunId: null, showFailureToaster: true, query: "const generateReturn = () => {\n const status = () => {\n try {\n return 200\n } catch {\n return 200\n }\n }\n const body = () => {\n try {\n return {\n data: readQuery.data,\n error: readQuery.error\n }\n } catch {\n return {'error': true, 'messsage': 'there was a problem parsing the JSON body of readReturn'}\n }\n }\n return {status: status(), body: body() }\n }\n return generateReturn()\n ", playgroundQueryUuid: "", playgroundQueryId: null, error: null, workflowRunBodyType: "raw", privateParams: [], runWhenPageLoadsDelay: "", data: null, importedQueryInputs: {}, _additionalScope: [], isImported: false, showSuccessToaster: true, cacheKeyTtl: "", requestSentTimestamp: null, metadata: null, workflowActionType: null, editorMode: "sql", queryRunTime: null, changesetObject: "", errorTransformer: "// The variable 'data' allows you to reference the request's data in the transformer. \n// example: return data.find(element => element.isError)\nreturn data.error", finished: null, confirmationMessage: null, isFetching: false, changeset: "", rawData: null, queryTriggerDelay: "0", watchedParams: [], enableErrorTransformer: false, showLatestVersionUpdatedWarning: false, timestamp: 0, evalType: "script", importedQueryDefaults: {}, enableTransformer: false, showUpdateSetValueDynamicallyToggle: true, runWhenPageLoads: false, transformer: "// Query results are available as the `data` variable\nreturn formatDataAsArray(data)", events: [], queryTimeout: "10000", workflowId: null, requireConfirmation: false, queryFailureConditions: "", changesetIsObject: false, enableCaching: false, allowedGroups: [], workflowBlockPluginId: null, offlineQueryType: "None", queryThrottleTime: "750", updateSetValueDynamically: false, notificationDuration: "", }, }, }, { block: { pluginId: "updateReturn", incomingOnSuccessPlugins: ["updateQuery"], top: 144, left: 1504, environment: "production", editorType: "JavascriptQuery", resourceName: "JavascriptQuery", blockType: "webhookReturn", options: { body: "{\n data: updateQuery.data,\n error: updateQuery.error\n }", status: "200", }, }, pluginTemplate: { id: "updateReturn", type: "datasource", subtype: "JavascriptQuery", resourceName: "JavascriptQuery", template: { queryRefreshTime: "", lastReceivedFromResourceAt: null, queryDisabledMessage: "", servedFromCache: false, offlineUserQueryInputs: "", successMessage: "", queryDisabled: "", playgroundQuerySaveId: "latest", workflowParams: null, resourceNameOverride: "", runWhenModelUpdates: false, workflowRunId: null, showFailureToaster: true, query: "const generateReturn = () => {\n const status = () => {\n try {\n return 200\n } catch {\n return 200\n }\n }\n const body = () => {\n try {\n return {\n data: updateQuery.data,\n error: updateQuery.error\n }\n } catch {\n return {'error': true, 'messsage': 'there was a problem parsing the JSON body of updateReturn'}\n }\n }\n return {status: status(), body: body() }\n }\n return generateReturn()\n ", playgroundQueryUuid: "", playgroundQueryId: null, error: null, workflowRunBodyType: "raw", privateParams: [], runWhenPageLoadsDelay: "", data: null, importedQueryInputs: {}, _additionalScope: [], isImported: false, showSuccessToaster: true, cacheKeyTtl: "", requestSentTimestamp: null, metadata: null, workflowActionType: null, editorMode: "sql", queryRunTime: null, changesetObject: "", errorTransformer: "// The variable 'data' allows you to reference the request's data in the transformer. \n// example: return data.find(element => element.isError)\nreturn data.error", finished: null, confirmationMessage: null, isFetching: false, changeset: "", rawData: null, queryTriggerDelay: "0", watchedParams: [], enableErrorTransformer: false, showLatestVersionUpdatedWarning: false, timestamp: 0, evalType: "script", importedQueryDefaults: {}, enableTransformer: false, showUpdateSetValueDynamicallyToggle: true, runWhenPageLoads: false, transformer: "// Query results are available as the `data` variable\nreturn formatDataAsArray(data)", events: [], queryTimeout: "10000", workflowId: null, requireConfirmation: false, queryFailureConditions: "", changesetIsObject: false, enableCaching: false, allowedGroups: [], workflowBlockPluginId: null, offlineQueryType: "None", queryThrottleTime: "750", updateSetValueDynamically: false, notificationDuration: "", }, }, }, { block: { pluginId: "invalidType", incomingOnSuccessPlugins: [], top: 880, left: 1056, environment: "production", editorType: "JavascriptQuery", resourceName: "JavascriptQuery", blockType: "webhookReturn", options: { body: '{\n success:false,\n mesage:"Invalid type in request body"\n}', status: "400", }, incomingPortsPlugins: [ { blockPluginId: "switchType", portId: "12676e07-8c10-4bb5-914a-98e6608a386e", }, ], }, pluginTemplate: { id: "invalidType", type: "datasource", subtype: "JavascriptQuery", resourceName: "JavascriptQuery", template: { queryRefreshTime: "", lastReceivedFromResourceAt: null, queryDisabledMessage: "", servedFromCache: false, offlineUserQueryInputs: "", successMessage: "", queryDisabled: "", playgroundQuerySaveId: "latest", workflowParams: null, resourceNameOverride: "", runWhenModelUpdates: false, workflowRunId: null, showFailureToaster: true, query: "const generateReturn = () => {\n const status = () => {\n try {\n return 400\n } catch {\n return 200\n }\n }\n const body = () => {\n try {\n return {\n success:false,\n mesage:\"Invalid type in request body\"\n}\n } catch {\n return {'error': true, 'messsage': 'there was a problem parsing the JSON body of missingTypeReturn'}\n }\n }\n return {status: status(), body: body() }\n }\n return generateReturn()\n ", playgroundQueryUuid: "", playgroundQueryId: null, error: null, workflowRunBodyType: "raw", privateParams: [], runWhenPageLoadsDelay: "", data: null, importedQueryInputs: {}, _additionalScope: [], isImported: false, showSuccessToaster: true, cacheKeyTtl: "", requestSentTimestamp: null, metadata: null, workflowActionType: null, editorMode: "sql", queryRunTime: null, changesetObject: "", errorTransformer: "// The variable 'data' allows you to reference the request's data in the transformer. \n// example: return data.find(element => element.isError)\nreturn data.error", finished: null, confirmationMessage: null, isFetching: false, changeset: "", rawData: null, queryTriggerDelay: "0", watchedParams: [], enableErrorTransformer: false, showLatestVersionUpdatedWarning: false, timestamp: 0, evalType: "script", importedQueryDefaults: {}, enableTransformer: false, showUpdateSetValueDynamicallyToggle: true, runWhenPageLoads: false, transformer: "// Query results are available as the `data` variable\nreturn formatDataAsArray(data)", events: [], queryTimeout: "10000", workflowId: null, requireConfirmation: false, queryFailureConditions: "", changesetIsObject: false, enableCaching: false, allowedGroups: [], workflowBlockPluginId: null, offlineQueryType: "None", queryThrottleTime: "750", updateSetValueDynamically: false, notificationDuration: "", }, }, }, { block: { pluginId: "destroyQuery", incomingOnSuccessPlugins: [], top: 512, left: 1056, environment: "production", editorType: "SqlQueryUnified", resourceName: "", blockType: "default", incomingPortsPlugins: [ { blockPluginId: "switchType", portId: "221b4d5d-fb16-4581-9b71-f95ef77c66d0", }, ], }, pluginTemplate: { id: "destroyQuery", type: "datasource", subtype: "SqlQueryUnified", resourceName: null, template: { queryRefreshTime: "", records: "", lastReceivedFromResourceAt: null, databasePasswordOverride: "", queryDisabledMessage: "", servedFromCache: false, offlineUserQueryInputs: "", successMessage: "", queryDisabled: "", playgroundQuerySaveId: "latest", workflowParams: null, resourceNameOverride: "", runWhenModelUpdates: false, workflowRunId: null, showFailureToaster: true, query: 'delete from name_placeholder where "id" = {{startTrigger.data.row}}', playgroundQueryUuid: "", playgroundQueryId: null, error: null, workflowRunBodyType: "raw", privateParams: [], runWhenPageLoadsDelay: "", warningCodes: [], data: null, recordId: "", importedQueryInputs: {}, isImported: false, showSuccessToaster: true, dataArray: [], cacheKeyTtl: "", filterBy: '[{"key":"id","value":"{{startTrigger.data.row}}","operation":"="}]', requestSentTimestamp: null, databaseHostOverride: "", metadata: null, workflowActionType: null, editorMode: "sql", queryRunTime: null, actionType: "DELETE_BY", changesetObject: "", shouldUseLegacySql: false, errorTransformer: "// The variable 'data' allows you to reference the request's data in the transformer. \n// example: return data.find(element => element.isError)\nreturn data.error", finished: null, databaseNameOverride: "", confirmationMessage: null, isFetching: false, changeset: "", rawData: null, queryTriggerDelay: "0", resourceTypeOverride: "postgresql", watchedParams: [], enableErrorTransformer: false, enableBulkUpdates: false, showLatestVersionUpdatedWarning: false, timestamp: 0, evalType: "script", importedQueryDefaults: {}, enableTransformer: false, showUpdateSetValueDynamicallyToggle: true, bulkUpdatePrimaryKey: "", runWhenPageLoads: false, transformer: "// Query results are available as the `data` variable\nreturn formatDataAsArray(data)", events: [], tableName: "name_placeholder", queryTimeout: "120000", workflowId: null, requireConfirmation: false, queryFailureConditions: "", changesetIsObject: false, enableCaching: false, allowedGroups: [], workflowBlockPluginId: null, databaseUsernameOverride: "", shouldEnableBatchQuerying: false, doNotThrowOnNoOp: true, offlineQueryType: "None", queryThrottleTime: "750", updateSetValueDynamically: false, notificationDuration: "", }, }, }, { block: { pluginId: "destroyReturn", incomingOnSuccessPlugins: ["destroyQuery"], top: 512, left: 1504, environment: "production", editorType: "JavascriptQuery", resourceName: "JavascriptQuery", blockType: "webhookReturn", options: { body: "{\n data: destroyQuery.data,\n error: destroyQuery.error\n }", status: "200", }, }, pluginTemplate: { id: "destroyReturn", type: "datasource", subtype: "JavascriptQuery", resourceName: "JavascriptQuery", template: { queryRefreshTime: "", lastReceivedFromResourceAt: null, queryDisabledMessage: "", servedFromCache: false, offlineUserQueryInputs: "", successMessage: "", queryDisabled: "", playgroundQuerySaveId: "latest", workflowParams: null, resourceNameOverride: "", runWhenModelUpdates: false, workflowRunId: null, showFailureToaster: true, query: "const generateReturn = () => {\n const status = () => {\n try {\n return 200\n } catch {\n return 200\n }\n }\n const body = () => {\n try {\n return {\n data: destroyQuery.data,\n error: destroyQuery.error\n }\n } catch {\n return {'error': true, 'messsage': 'there was a problem parsing the JSON body of destroyReturn'}\n }\n }\n return {status: status(), body: body() }\n }\n return generateReturn()\n ", playgroundQueryUuid: "", playgroundQueryId: null, error: null, workflowRunBodyType: "raw", privateParams: [], runWhenPageLoadsDelay: "", data: null, importedQueryInputs: {}, _additionalScope: [], isImported: false, showSuccessToaster: true, cacheKeyTtl: "", requestSentTimestamp: null, metadata: null, workflowActionType: null, editorMode: "sql", queryRunTime: null, changesetObject: "", errorTransformer: "// The variable 'data' allows you to reference the request's data in the transformer. \n// example: return data.find(element => element.isError)\nreturn data.error", finished: null, confirmationMessage: null, isFetching: false, changeset: "", rawData: null, queryTriggerDelay: "0", watchedParams: [], enableErrorTransformer: false, showLatestVersionUpdatedWarning: false, timestamp: 0, evalType: "script", importedQueryDefaults: {}, enableTransformer: false, showUpdateSetValueDynamicallyToggle: true, runWhenPageLoads: false, transformer: "// Query results are available as the `data` variable\nreturn formatDataAsArray(data)", events: [], queryTimeout: "10000", workflowId: null, requireConfirmation: false, queryFailureConditions: "", changesetIsObject: false, enableCaching: false, allowedGroups: [], workflowBlockPluginId: null, offlineQueryType: "None", queryThrottleTime: "750", updateSetValueDynamically: false, notificationDuration: "", }, }, }, { block: { pluginId: "filterBadRequest", incomingOnSuccessPlugins: ["startTrigger"], top: 0, left: 48, environment: "production", editorType: "JavascriptQuery", resourceName: "JavascriptQuery", blockType: "conditional", options: { conditions: [ { id: "44af1908-d150-49f9-9f9b-340366665a96", type: "if", statement: "startTrigger.data?.type", outgoingPortId: "c7a9d846-836e-4fbd-87af-3d76aa66715c", }, { id: "fde78ed6-12ea-4d47-b0ff-31404aa98db2", type: "else", statement: "", outgoingPortId: "861a427e-f1c4-4ba1-8532-52580fc61da9", }, ], }, outgoingPorts: [ { id: "c7a9d846-836e-4fbd-87af-3d76aa66715c", name: "0", type: "conditional", }, { id: "861a427e-f1c4-4ba1-8532-52580fc61da9", name: "1", type: "conditional", }, ], incomingPortsPlugins: [], }, pluginTemplate: { id: "filterBadRequest", type: "datasource", subtype: "JavascriptQuery", resourceName: "JavascriptQuery", template: { queryRefreshTime: "", lastReceivedFromResourceAt: null, queryDisabledMessage: "", servedFromCache: false, offlineUserQueryInputs: "", successMessage: "", queryDisabled: "", playgroundQuerySaveId: "latest", workflowParams: null, resourceNameOverride: "", runWhenModelUpdates: false, workflowRunId: null, showFailureToaster: true, query: "if (startTrigger.data?.type) {\n executePathAtMostOnce('0')\n}\nelse { executePathAtMostOnce('1') }", playgroundQueryUuid: "", playgroundQueryId: null, error: null, workflowRunBodyType: "raw", privateParams: [], runWhenPageLoadsDelay: "", data: null, importedQueryInputs: {}, _additionalScope: [], isImported: false, showSuccessToaster: true, cacheKeyTtl: "", requestSentTimestamp: null, metadata: null, workflowActionType: null, editorMode: "sql", queryRunTime: null, changesetObject: "", errorTransformer: "// The variable 'data' allows you to reference the request's data in the transformer. \n// example: return data.find(element => element.isError)\nreturn data.error", finished: null, confirmationMessage: null, isFetching: false, changeset: "", rawData: null, queryTriggerDelay: "0", watchedParams: [], enableErrorTransformer: false, showLatestVersionUpdatedWarning: false, timestamp: 0, evalType: "script", importedQueryDefaults: {}, enableTransformer: false, showUpdateSetValueDynamicallyToggle: true, runWhenPageLoads: false, transformer: "// Query results are available as the `data` variable\nreturn formatDataAsArray(data)", events: [], queryTimeout: "10000", workflowId: null, requireConfirmation: false, queryFailureConditions: "", changesetIsObject: false, enableCaching: false, allowedGroups: [], workflowBlockPluginId: null, offlineQueryType: "None", queryThrottleTime: "750", updateSetValueDynamically: false, notificationDuration: "", }, }, }, { block: { pluginId: "missingType", incomingOnSuccessPlugins: [], top: 512, left: 512, environment: "production", editorType: "JavascriptQuery", resourceName: "JavascriptQuery", blockType: "webhookReturn", options: { body: '{\n success:false,\n mesage:"Missing type in request body"\n}', status: "400", }, incomingPortsPlugins: [ { blockPluginId: "filterBadRequest", portId: "861a427e-f1c4-4ba1-8532-52580fc61da9", }, ], }, pluginTemplate: { id: "missingType", type: "datasource", subtype: "JavascriptQuery", resourceName: "JavascriptQuery", template: { queryRefreshTime: "", lastReceivedFromResourceAt: null, queryDisabledMessage: "", servedFromCache: false, offlineUserQueryInputs: "", successMessage: "", queryDisabled: "", playgroundQuerySaveId: "latest", workflowParams: null, resourceNameOverride: "", runWhenModelUpdates: false, workflowRunId: null, showFailureToaster: true, query: "const generateReturn = () => {\n const status = () => {\n try {\n return 400\n } catch {\n return 200\n }\n }\n const body = () => {\n try {\n return {\n success:false,\n mesage:\"Missing type in request body\"\n}\n } catch {\n return {'error': true, 'messsage': 'there was a problem parsing the JSON body of missingType'}\n }\n }\n return {status: status(), body: body() }\n }\n return generateReturn()\n ", playgroundQueryUuid: "", playgroundQueryId: null, error: null, workflowRunBodyType: "raw", privateParams: [], runWhenPageLoadsDelay: "", data: null, importedQueryInputs: {}, _additionalScope: [], isImported: false, showSuccessToaster: true, cacheKeyTtl: "", requestSentTimestamp: null, metadata: null, workflowActionType: null, editorMode: "sql", queryRunTime: null, changesetObject: "", errorTransformer: "// The variable 'data' allows you to reference the request's data in the transformer. \n// example: return data.find(element => element.isError)\nreturn data.error", finished: null, confirmationMessage: null, isFetching: false, changeset: "", rawData: null, queryTriggerDelay: "0", watchedParams: [], enableErrorTransformer: false, showLatestVersionUpdatedWarning: false, timestamp: 0, evalType: "script", importedQueryDefaults: {}, enableTransformer: false, showUpdateSetValueDynamicallyToggle: true, runWhenPageLoads: false, transformer: "// Query results are available as the `data` variable\nreturn formatDataAsArray(data)", events: [], queryTimeout: "10000", workflowId: null, requireConfirmation: false, queryFailureConditions: "", changesetIsObject: false, enableCaching: false, allowedGroups: [], workflowBlockPluginId: null, offlineQueryType: "None", queryThrottleTime: "750", updateSetValueDynamically: false, notificationDuration: "", }, }, }, ];