run()

in salesforce/lib/query.js [70:109]


    run(options) {
        options = options || {};
        let logger = this._conn.logger;
        let responseTarget = options.responseTarget || this._options.responseTarget;
        // let maxFetch = options.maxFetch || this._options.maxFetch;

        return Promise.resolve(
            this._locator ? this._conn.baseUrl() + "/query/" + this._locator
                : this.toSOQL()
                    .then((soql) => {
                        this.totalFetched = 0;
                        logger.debug("SOQL = " + soql);
                        return this._conn.baseUrl() + "/query?q=" + encodeURIComponent(soql);
                    })
        ).then((url) => this._conn.request({
            method: "GET",
            url: url,
            headers: options.headers || this._options.headers
        })).then((data) => {
            let response;
            switch (responseTarget) {
                case ResponseTargets.SingleRecord:
                    response = data.records && data.records.length > 0 ? data.records[0] : null;
                    break;
                case ResponseTargets.Records:
                    response = data.records;
                    break;
                case ResponseTargets.Count:
                    response = data.totalSize;
                    break;
                default:
                    response = data;
                    break;
            }
            if (data.nextRecordsUrl) {
                this._locator = data.nextRecordsUrl.split("/").pop();
            }
            return response;
        });
    }