diff --git a/packages/backend/src/apps/salesforce/actions/find-record/index.ts b/packages/backend/src/apps/salesforce/actions/find-record/index.ts new file mode 100644 index 00000000..3e8099b1 --- /dev/null +++ b/packages/backend/src/apps/salesforce/actions/find-record/index.ts @@ -0,0 +1,80 @@ +import defineAction from '../../../../helpers/define-action'; + +export default defineAction({ + name: 'Find Record', + key: 'findRecord', + description: + 'Finds a record of a specified object by a field and value.', + arguments: [ + { + label: 'Object', + key: 'object', + type: 'dropdown' as const, + required: true, + description: 'Pick which type of object you want to search for.', + source: { + type: 'query', + name: 'getDynamicData', + arguments: [ + { + name: 'key', + value: 'listObjects', + }, + ], + }, + }, + { + label: 'Field', + key: 'field', + type: 'dropdown' as const, + description: 'Pick which field to search by', + required: true, + variables: false, + dependsOn: ['parameters.object'], + source: { + type: 'query', + name: 'getDynamicData', + arguments: [ + { + name: 'key', + value: 'listFields', + }, + { + name: 'parameters.object', + value: '{parameters.object}', + }, + ], + }, + }, + { + label: 'Search value', + key: 'searchValue', + type: 'string' as const, + required: true, + variables: true, + }, + ], + + async run($) { + const query = ` + SELECT + FIELDS(ALL) + FROM + ${$.step.parameters.object} + WHERE + ${$.step.parameters.field} = '${$.step.parameters.searchValue}' + LIMIT 1 + `; + + const options = { + params: { + q: query, + }, + }; + + const { data } = await $.http.get('/services/data/v56.0/query', options); + const record = data.records[0]; + + $.setActionItem({ raw: record }); + }, +}); diff --git a/packages/backend/src/apps/salesforce/actions/index.ts b/packages/backend/src/apps/salesforce/actions/index.ts new file mode 100644 index 00000000..aa8fce74 --- /dev/null +++ b/packages/backend/src/apps/salesforce/actions/index.ts @@ -0,0 +1,3 @@ +import findRecord from './find-record'; + +export default [findRecord]; diff --git a/packages/backend/src/apps/salesforce/index.ts b/packages/backend/src/apps/salesforce/index.ts index dd394f12..a6773046 100644 --- a/packages/backend/src/apps/salesforce/index.ts +++ b/packages/backend/src/apps/salesforce/index.ts @@ -2,6 +2,7 @@ import defineApp from '../../helpers/define-app'; import addAuthHeader from './common/add-auth-header'; import auth from './auth'; import triggers from './triggers'; +import actions from './actions'; import dynamicData from './dynamic-data'; export default defineApp({ @@ -16,5 +17,6 @@ export default defineApp({ beforeRequest: [addAuthHeader], auth, triggers, + actions, dynamicData, });