"use strict";

function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

/**
 * Licensed Materials - Property of IBM
 * IBM Business Analytics (C) Copyright IBM Corp. 2019, 2020
 * US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
 */

/**
 * @class QueryAPI
 * @hideconstructor
 * @classdesc API class to construct and run queries.
 */
define([], function () {
	var QueryAPI = function () {
		function QueryAPI() {
			_classCallCheck(this, QueryAPI);
		}

		/**
   * @function QueryAPI#setDataSource
   * @description Set data source id required when execute query.
   * @public
   * @param {String} sourceId Unique data source identifier
   * @return {Promise} Promise resolved when the metadata is loaded
   */
		QueryAPI.prototype.setDataSource = function setDataSource() /* sourceId */{};

		/**
   * @function QueryAPI#addColumns
   * @description Add an array of columns to query for.
   * @public
   *
   * @param {String[]} columnIdList An array of column ids.
   * @returns An array of {@link QueryDataItemAPI}
   */


		QueryAPI.prototype.addColumns = function addColumns() /* columnIdList */{};

		/**
   * @function QueryAPI#addDataItems
   * @description Add an array of DataItemAPI to query
   * @public
   *
   * @param {String[]} dataItemList An array of DataItemAPI instances
   * @returns An array of {@link QueryDataItemAPI}
   */


		QueryAPI.prototype.addDataItems = function addDataItems() /* dataItemList */{};

		/**
   * @function QueryAPI#addFilters
   * @description Add an array of filters to query.
   * @param {FilterEntry[]} filters an array of {@link FilterEntry}
   */


		QueryAPI.prototype.addFilters = function addFilters() /* filters */{};

		/**
   * @function QueryAPI#addSearchTerms
   * @param {String} columnId The column id to add the search to too
   * @param {String[]} searchTermList A array of strings to perform a filter against the specified column
   */


		QueryAPI.prototype.addSearchTerms = function addSearchTerms() /* columnId, searchTermList */{};
		/**
   * @function QueryAPI#setLimit
   * @description Set the query row limit.
   * @public
   *
   * @param {Number} dataRowLimit The number of rows to return in query result.
   */


		QueryAPI.prototype.setLimit = function setLimit() /* dataRowLimit */{};

		/**
   * @function QueryAPI#setOffset
   * @description Set the query offset.
   * @public
   *
   * @param {Number} offset The start index of rows to return in query result.
   * @return {Number} Returns the actually value of the offset. Defaults to 0.
   */


		QueryAPI.prototype.setOffset = function setOffset() /* offset */{};

		/**
   * @function QueryAPI#executeQuery
   * @description Execute query with preset parameters.
   * @public
   * @async
   *
   * @param {Object} [requestOptions] additional request options
   * @return {Promise<QueryResultAPI>} Returns a promise that will be resolved with a {@link QueryResultAPI} object.
   */


		QueryAPI.prototype.executeQuery = function executeQuery() {};

		return QueryAPI;
	}();

	return QueryAPI;
});
//# sourceMappingURL=QueryAPI.js.map