src/searching/builder/PreFilteredSearchBuilder.js
'use strict';
import FlattenedSearchBuilder from './FlattenedSearchBuilder';
/**
* This is a abstract class. It is a class that extends from base to make all kind of summary search request to OpenGate North API.
*/
export default class PreFilteredSearchBuilder extends FlattenedSearchBuilder {
/**
* Constructor
* @param {!InternalOpenGateAPI} parent - this is ogapi instance
* @param {!object} routes - this defined the routes. One of those routes must be called on Builder before call build method.
*/
constructor(parent, routes, fieldFinder) {
super(parent, routes, fieldFinder);
if (this.constructor === PreFilteredSearchBuilder) {
throw new Error("Cannot construct Abstract instances directly");
}
}
/**
* This option forces search api to add a filter of provisioned content
* @example
* ogapi.subscribersSearchBuilder().provisioned()
* @return {PreFilteredSearchBuilder}
*/
provisioned() {
this._provisioned = true;
return this;
}
/**
* This option forces search api to add a filter of collected content
* @example
* ogapi.subscribersSearchBuilder().collected()
* @return {PreFilteredSearchBuilder}
*/
collected() {
this._collected = true;
return this;
}
/**
* The search request will have this filter
* @example
* ogapi.devicesSearchBuilder().select(
* ogapi.newSelectBuilder().add(SE.element("provision.device.identifier", ["value"], "id"), SE.add("device.temperature.value", ["value"]))
* ) // Setting SelectBuilder
* ogapi.devicesSearchBuilder().select({
* "elements": [
* {"name": "provision.device.identifier","fields": ["value"],"alias": "id"},
* {"name": "device.temperature.value","fields": ["value"]}
* ]
* }) //Custom select
* @param {!(SelectBuilder|object)} select
* @return {PreFilteredSearchBuilder}
*/
select(select) {
this._builderParams.select = (select || []);
return this;
}
/**
* The response will return a response without sorted
* @example
* ogapi.assetsSearchBuilder().disableDefaultSorted()
* @return {PreFilteredSearchBuilder}
*/
disableDefaultSorted() {
this._urlParams.defaultSorted = false;
return this;
}
/**
* The response will return a response by applying the filter with likes case-no-sensitive
* @example
* ogapi.entitiesSearchBuilder().disableCaseSensitive()
* @return {EntitiesSearchBuilder}
*/
disableCaseSensitive(flag) {
this._urlParams.caseSensitive = flag ? flag : false;
return this;
}
/**
* The response will return a response by applying the filter with likes case-no-sensitive
* @example
* ogapi.entitiesSearchBuilder().removeCaseSensitive()
* @return {EntitiesSearchBuilder}
*/
removeCaseSensitive() {
if (this._urlParams)
delete this._urlParams.caseSensitive;
return this;
}
}