Source: sourceHelpers.js

"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.lookup = lookup;
exports.relationship = relationship;

var _lodashFp = require("lodash-fp");

var _languageCommon = require("@openfn/language-common");

/**
 * Adds a lookup or 'dome insert' to a record.
 * @public
 * @example
 *  lookup("relationship_name__r", "externalID on related object", "$.path")
 * @constructor
 * @param {string} relationshipName - `__r` relationship field on the record.
 * @param {string} externalId - Salesforce ExternalID field.
 * @param {string} path - JSONPath to data source.
 * @returns {object}
 */
function lookup(relationshipName, externalId, path) {
  return (0, _languageCommon.field)(relationshipName, state => {
    return {
      [externalId]: (0, _languageCommon.sourceValue)(path)(state)
    };
  });
}
/**
 * Adds a lookup relation or 'dome insert' to a record.
 * @public
 * @example
 * Data Sourced Value:
 *  relationship("relationship_name__r", "externalID on related object", dataSource("path"))
 * Fixed Value:
 *  relationship("relationship_name__r", "externalID on related object", "hello world")
 * @constructor
 * @param {string} relationshipName - `__r` relationship field on the record.
 * @param {string} externalId - Salesforce ExternalID field.
 * @param {string} dataSource - resolvable source.
 * @returns {object}
 */


function relationship(relationshipName, externalId, dataSource) {
  return (0, _languageCommon.field)(relationshipName, state => {
    if (typeof dataSource == 'function') {
      return {
        [externalId]: dataSource(state)
      };
    }

    return {
      [externalId]: dataSource
    };
  });
}