@flexvertex/flexvertex-driver
Version:
The official FlexVertex Node.js driver
91 lines (76 loc) • 2.31 kB
JavaScript
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);
}
}