actions/update-record/update-record.mjs
import { convertFieldsToProps, getAdditionalFields, } from "../../common/props-utils.mjs"; import salesforce from "../../salesforce_rest_api.app.mjs"; import { additionalFields } from "../common/base-create-update.mjs"; export default { key: "salesforce_rest_api-update-record", name: "Update Record", description: "Update fields of a record. [See the documentation](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/dome_update_fields.htm)", version: "0.3.4", annotations: { destructiveHint: true, openWorldHint: true, readOnlyHint: false, }, type: "action", props: { salesforce, sobjectType: { propDefinition: [ salesforce, "objectType", ], description: "The type of object to update a record of.", }, recordId: { propDefinition: [ salesforce, "recordId", (c) => ({ objType: c.sobjectType, }), ], description: "The record to update.", }, fieldsToUpdate: { propDefinition: [ salesforce, "fieldsToUpdate", (c) => ({ objType: c.sobjectType, }), ], reloadProps: true, }, }, methods: { getAdditionalFields, convertFieldsToProps, }, async additionalProps() { const { sobjectType, fieldsToUpdate, } = this; const fields = await this.salesforce.getFieldsForObjectType(sobjectType); const selectedFields = fields.filter(({ name }) => fieldsToUpdate.includes(name)); const selectedFieldProps = this.convertFieldsToProps(selectedFields); return { docsInfo: { type: "alert", alertType: "info", content: `[See the documentation](https://developer.salesforce.com/docs/atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_${sobjectType.toLowerCase()}.htm) for information on all available fields.`, }, ...selectedFieldProps, additionalFields, }; }, async run({ $ }) { const { salesforce, sobjectType, recordId, fieldsToUpdate, getAdditionalFields: getData, convertFieldsToProps, docsInfo, additionalFields, ...data } = this; const response = await this.salesforce.updateRecord(sobjectType, { $, id: recordId, data: { ...data, ...getData(), }, }); $.export("$summary", `Successfully updated ${sobjectType} record (ID: ${recordId})`); return response; }, };