UNPKG

@twofistedjustice/square-pie

Version:

an easy to use class based chainable interface for the Square API.

344 lines (322 loc) 11.5 kB
const Catalog_Search_Objects_Super = require("./catalog_request_abstract_search_objects_super"); const { define, shazam_is_array } = require("./utilities"); const { catalog_search_objects_enum } = require("./enum/index"); const man = "can search for any type of catalog object\n" + "This is complicated. Read the Pie doc before you try to use it: " + "https://github.com/TwoFistedJustice/square-pie/blob/main/docs/pie_catalog_request_search.md\n" + "This class uses ONE array of ids to cross reference your search.\n" + "To search by sets of key:value pairs use Catalog_Search_Filter" + "\nhttps://developer.squareup.com/reference/square/catalog-api/search-catalog-objects"; /** * {@link https://developer.squareup.com/reference/square/catalog-api/search-catalog-objects | **-------> Link To Square Docs <-------**} * @class Catalog_Search_Cross_Reference * @extends Square_Request * @classdesc * This is complicated. Read the {@link https://github.com/TwoFistedJustice/square-pie/blob/main/docs/pie_catalog_request_search.md | Pie Doc} before you try to use it. * This class uses ONE array of ids to cross reference your search * To search by sets of key:value pairs use `Catalog_Search_Filter` * */ class Catalog_Search_Cross_Reference extends Catalog_Search_Objects_Super { _display_name = "Catalog_Search_Cross_Reference"; _last_verified_square_api_version = "2021-12-15"; _help = this.display_name + ": " + man; constructor() { super(); } // SETTERS set item_variations_for_item_option_values_query(id) { // check for prop, clear anything on query, create and set to array this.#init_query_array( "item_variations_for_item_option_values_query", "item_option_value_ids" ); this._body.query.item_variations_for_item_option_values_query.item_option_value_ids.push( id ); } set concat_item_variations_for_item_option_values_query(arr) { // validate input is array, check for prop, clear anything on query, create and set to array if ( shazam_is_array( arr, this._display_name, "concat_item_variations_for_item_option_values_query" ) ) { this.#init_query_array( "item_variations_for_item_option_values_query", "item_option_value_ids" ); let joined_array = this._body.query.item_variations_for_item_option_values_query.item_option_value_ids.concat( arr ); this._body.query.item_variations_for_item_option_values_query.item_option_value_ids = joined_array; } } set items_for_item_options_query(id) { this.#init_query_array("items_for_item_options_query", "item_option_ids"); this._body.query.items_for_item_options_query.item_option_ids.push(id); } set concat_items_for_item_options_query(arr) { // validate input is array, check for prop, clear anything on query, create and set to array if ( shazam_is_array( arr, this._display_name, "concat_items_for_item_options_query" ) ) { this.#init_query_array("items_for_item_options_query", "item_option_ids"); let joined_array = this._body.query.items_for_item_options_query.item_option_ids.concat( arr ); this._body.query.items_for_item_options_query.item_option_ids = joined_array; } } set items_for_modifier_list_query(id) { this.#init_query_array( "items_for_modifier_list_query", "modifier_list_ids" ); this._body.query.items_for_modifier_list_query.modifier_list_ids.push(id); } set concat_items_for_modifier_list_query(arr) { // validate input is array, check for prop, clear anything on query, create and set to array if ( shazam_is_array( arr, this._display_name, "concat_items_for_modifier_list_query" ) ) { this.#init_query_array( "items_for_modifier_list_query", "modifier_list_ids" ); let joined_array = this._body.query.items_for_modifier_list_query.modifier_list_ids.concat( arr ); this._body.query.items_for_modifier_list_query.modifier_list_ids = joined_array; } } set items_for_tax_query(id) { this.#init_query_array("items_for_tax_query", "tax_ids"); this._body.query.items_for_tax_query.tax_ids.push(id); } set concat_items_for_tax_query(arr) { // validate input is array, check for prop, clear anything on query, create and set to array if ( shazam_is_array(arr, this._display_name, "concat_items_for_tax_query") ) { this.#init_query_array("items_for_tax_query", "tax_ids"); let joined_array = this._body.query.items_for_tax_query.tax_ids.concat(arr); this._body.query.items_for_tax_query.tax_ids = joined_array; } } #init_query_array(property_name, array_name) { if ( !Object.prototype.hasOwnProperty.call(this._body.query, property_name) ) { this.query_reset(); define(this._body.query, property_name, { [array_name]: [] }); } } /** * add an item_variation id to your query * @typedef {function} Catalog_Search_Cross_Reference.variations * @memberOf Catalog_Search_Cross_Reference * @method * @public * @param {string} id an ID of a an item variation. * */ variations(id) { this.item_variations_for_item_option_values_query = id; return this; } /** * Add an item id to your query. * @typedef {function} Catalog_Search_Cross_Reference.items * @memberOf Catalog_Search_Cross_Reference * @method * @public * @param {string} id an ID of a an item * */ items(id) { this.items_for_item_options_query = id; return this; } /** * add a modifier list id to your query * @typedef {function} Catalog_Search_Cross_Reference.modifiers * @memberOf Catalog_Search_Cross_Reference * @method * @public * @param {string} id an ID of a a modifier_list * */ modifiers(id) { this.items_for_modifier_list_query = id; return this; } /** * Add a tax id to your query * @typedef {function} Catalog_Search_Cross_Reference.taxes * @memberOf Catalog_Search_Cross_Reference * @method * @public * @param {string} id an ID of a a tax object * */ taxes(id) { this.items_for_tax_query = id; return this; } /** * Add the contents of an array of item variation ids to your query. * @typedef {function} Catalog_Search_Cross_Reference.concat_variations * @memberOf Catalog_Search_Cross_Reference * @method * @public * @param {array<id>} arr an array of IDs of Item Variations. * */ concat_variations(arr) { this.concat_item_variations_for_item_option_values_query = arr; return this; } /** * Add the contents of an array of item_option ids to your query. * @typedef{function} Catalog_Search_Cross_Reference.concat_item * @memberOf Catalog_Search_Cross_Reference * @method * @public * @param {array<id>} arr an array of IDs of Item objects * */ concat_items(arr) { this.concat_items_for_item_options_query = arr; return this; } /** * Add the contents of an array of modifier list ids to your query. * @typedef {function} Catalog_Search_Cross_Reference.concat_modifiers * @memberOf Catalog_Search_Cross_Reference * @method * @public * @param {array<id>} arr an array of IDs of Modifier List objects * */ concat_modifiers(arr) { this.concat_items_for_modifier_list_query = arr; return this; } /** * Add the contents of an array of tax ids to your query. * @typedef {function} Catalog_Search_Cross_Reference.concat_taxes * @memberOf Catalog_Search_Cross_Reference * @method * @public * @param {array<id>} arr an array of IDs of Tax objects * */ concat_taxes(arr) { this.concat_items_for_tax_query = arr; return this; } /** * make() method of Catalog_Search_Cross_Reference * * Sub-Method names are exactly the same as the property names listed * in the Square docs. There may be additional methods and/or shortened aliases of other methods. * * You should read the generated docs as: * method_name(arg) {type} description of arg * * @typedef {function} Catalog_Search_Cross_Reference.make * @method * @public * @memberOf Catalog_Search_Cross_Reference * @property include_related_objects(bool) {boolean} * @property begin_time(id) {string<id>} - * @property object_types() {Enumerated} Calls {@link catalog_search_objects_enum.object_types|catalog_search_objects_enum.object_types} * @property variations (id) {string<id>} - * @property items(id) {string<id>} - * @property modifiers(id) {string<id>} - * @property taxes(id) {string<id>} - * @property concat_variations(arr) {array<id>} - adds the contents of an array of ids * @property concat_items(arr) {array<id>} - adds the contents of an array of ids * @property concat_modifiers(arr) {array<id>} - adds the contents of an array of ids * @property concat_taxes(arr) {array<id>} - adds the contents of an array of ids * @property concat_object_types() - adds the contents of an array of object types * @property types() - alias of object_type * @example * You must use parentheses with every call to make and with every sub-method. If you have to make a lot * of calls from different lines, it will reduce your tying and improve readability to set make() to a * variable. * * let make = myVar.make(); * make.gizmo() * make.gremlin() * //is the same as * myVar.make().gizmo().gremlin() * */ make() { // any changes made to super modification methods should be replicated on Catalog_Search_Filter return { self: this, include_related_objects: function (bool) { this.self.include_related_objects = bool; return this; }, begin_time: function (time) { this.self.begin_time = time; return this; }, object_types: function () { return catalog_search_objects_enum.object_types(this.self, this); }, variations: function (id) { this.self.item_variations_for_item_option_values_query = id; return this; }, items: function (id) { this.self.items_for_item_options_query = id; return this; }, modifiers: function (id) { this.self.items_for_modifier_list_query = id; return this; }, taxes: function (id) { this.self.items_for_tax_query = id; return this; }, concat_variations: function (arr) { this.self.concat_item_variations_for_item_option_values_query = arr; return this; }, concat_items: function (arr) { this.self.concat_items_for_item_options_query = arr; return this; }, concat_modifiers: function (arr) { this.self.concat_items_for_modifier_list_query = arr; return this; }, concat_taxes: function (arr) { this.self.concat_items_for_tax_query = arr; return this; }, concat_object_types: function (array_to_add) { this.self.concat_object_types(array_to_add); return this; }, types: function () { return this.object_types(); }, }; } } module.exports = Catalog_Search_Cross_Reference;