sf-composite-call
Version:
Support for making Salesforce composite call requests with integration for JSforce.
101 lines (100 loc) • 4.3 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.CompositeSubrequestQuery = void 0;
const Helpers_1 = require("./Helpers");
const CompositeSubrequest_1 = require("./CompositeSubrequest");
/**
* @description Class for SOQL query and queryAll Composite Subrequests.
* @augments CompositeSubrequest
* @param {string} query - A SOQL query.
* @param {string} [referenceId] - The reference ID of the query subrequest.
* @param {string} [version] - The version of the Salesforce API to use.
*/
class CompositeSubrequestQuery extends CompositeSubrequest_1.CompositeSubrequest {
constructor(query, referenceId, version) {
super(referenceId, version);
this.soql = query;
this.verb = 'query';
}
url() {
return super.url() + `/${this.verb}`;
}
get subrequest() {
if (Helpers_1.isNullOrUndefined(this.obj)) {
return this.get();
}
return this.obj;
}
/**
* @description Base request method for query operations.
* @param {string} [queryId] - **Optional.** The word `explain` or the `nextRecordsUrl` of a query.
* @param {object} [httpHeaders] - **Optional.** Additional HTTP headers to include in the request.
* @returns {CompositeSubrequestBody} - A subrequest object.
*/
get(queryId, httpHeaders) {
const soql = this.soql.replace(/\s/gu, '+');
this.obj = this.makeRequest(null, Helpers_1.isNullOrUndefined(queryId)
? this.url() + `?q=${soql}`
: queryId.trim().toLowerCase() === 'explain'
? this.url() + `?explain=${soql}`
: queryId, undefined, httpHeaders);
return this.obj;
}
/**
* @description Method for creating an `explain` operation.
* @param {object} [httpHeaders] - **Optional.** Additional HTTP headers to include in the request.
* @returns {CompositeSubrequestBody} - A subrequest object.
*/
explain(httpHeaders) {
this.verb = 'query';
return this.get('explain', httpHeaders);
}
/**
* @description Method for creating an `explain` operation with queryAll.
* @param {object} [httpHeaders] - **Optional.** Additional HTTP headers to include in the request.
* @returns {CompositeSubrequestBody} - A subrequest object.
*/
explainAll(httpHeaders) {
this.verb = 'queryAll';
return this.get('explain', httpHeaders);
}
/**
* @description Method for creating an operation to obtain next records.
* @param {string} nextRecordsUrl - The `nextRecordsUrl` of a query.
* @param {object} [httpHeaders] - **Optional.** Additional HTTP headers to include in the request.
* @returns {CompositeSubrequestBody} - A subrequest object.
*/
nextRecords(nextRecordsUrl, httpHeaders) {
this.verb = 'query';
return this.get(nextRecordsUrl, httpHeaders);
}
/**
* @description Method for creating an operation to obtain next records with queryAll.
* @param {string} nextRecordsUrl - The `nextRecordsUrl` of a query.
* @param {object} [httpHeaders] - **Optional.** Additional HTTP headers to include in the request.
* @returns {CompositeSubrequestBody} - A subrequest object.
*/
nextRecordsAll(nextRecordsUrl, httpHeaders) {
this.verb = 'queryAll';
return this.get(nextRecordsUrl, httpHeaders);
}
/**
* @description Method for creating a `query` operation.
* @param {object} [httpHeaders] - **Optional.** Additional HTTP headers to include in the request.
* @returns {CompositeSubrequestBody} - A subrequest object.
*/
query(httpHeaders) {
this.verb = 'query';
return this.get(null, httpHeaders);
}
/**
* @description Method for creating a `query` operation with queryAll.
* @param {object} [httpHeaders] - **Optional.** Additional HTTP headers to include in the request.
* @returns {CompositeSubrequestBody} - A subrequest object.
*/
queryAll(httpHeaders) {
this.verb = 'queryAll';
return this.get(null, httpHeaders);
}
}
exports.CompositeSubrequestQuery = CompositeSubrequestQuery;