UNPKG

@flexvertex/flexvertex-driver

Version:

The official FlexVertex Node.js driver

91 lines (76 loc) 2.31 kB
import { FlexJourney } from '../journey/FlexJourney.js'; import { FlexObject } from '../objects/FlexObject.js'; import { FlexResult } from '../schema/FlexResult.js'; import { FlexResultSet } from '../schema/FlexResultSet.js'; /** * Represents the returned user 'cargo' from a Voyager execution. * A FlexCargo may have user-created properties as well as either a {@link FlexJourney} or a {@link FlexResultSet}. * @hideconstructor */ export class FlexCargo extends FlexResult { #userProperties = { }; #journey; #resultSet; constructor(schema, cargoObj) { super(schema, cargoObj); if(!(cargoObj === undefined)) { if(!(cargoObj.UserProperties === undefined)) this.userProperties = cargoObj.UserProperties; if(!(cargoObj.Returned === undefined)) { if(!(cargoObj.Returned.Journey === undefined)) { this.#journey = new FlexJourney(schema, cargoObj.Returned.Journey); } else if(!(cargoObj.Returned.ResultSet === undefined)) { this.#resultSet = new FlexResultSet(schema, cargoObj.Returned.ResultSet); } } } } /** * * @returns {boolean} True if this FlexCargo contains a {@link FlexJourney} */ hasJourney() { return !(this.#journey === undefined); } /** * * @returns {boolean} True if this FlexCargo contains a {@link FlexResultSet} */ hasResultSet() { return !(this.#resultSet === undefined); } /** * @property {FlexJourney} journey */ get journey() { return this.#journey; } /** * @property {FlexResultSet} resultSet */ get resultSet() { return this.#resultSet; } /** * @property {Object} userProperties - Returns this FlexCargo's user properties */ get userProperties() { return this.#userProperties; } set userProperties(jsonProps) { Object.assign(this.#userProperties, jsonProps); } /** * @param {!string} key * @returns A user property named key if it exists */ getUserProperty(key) { return Object.getOwnPropertyDescriptor(this.#userProperties, key).value; } setUserProperty(key, value) { Object.defineProperty(this.#userProperties, key, { value: value, enumerable: true, writable: true }); return this; } printUserProperties() { FlexObject.printObject(this.#userProperties); } }