plywood
Version:
A query planner and executor
48 lines (47 loc) • 1.93 kB
JavaScript
import { __extends } from "tslib";
import { ChainableExpression, Expression } from './baseExpression';
var LookupExpression = (function (_super) {
__extends(LookupExpression, _super);
function LookupExpression(parameters) {
var _this = _super.call(this, parameters, dummyObject) || this;
_this._ensureOp('lookup');
_this._checkOperandTypes('STRING');
_this.lookupFn = parameters.lookupFn;
_this.type = _this.operand.type;
return _this;
}
LookupExpression.fromJS = function (parameters) {
var value = ChainableExpression.jsToValue(parameters);
value.lookupFn = parameters.lookupFn || parameters.lookup;
return new LookupExpression(value);
};
LookupExpression.prototype.valueOf = function () {
var value = _super.prototype.valueOf.call(this);
value.lookupFn = this.lookupFn;
return value;
};
LookupExpression.prototype.toJS = function () {
var js = _super.prototype.toJS.call(this);
js.lookupFn = this.lookupFn;
return js;
};
LookupExpression.prototype.equals = function (other) {
return _super.prototype.equals.call(this, other) && this.lookupFn === other.lookupFn;
};
LookupExpression.prototype._toStringParameters = function (_indent) {
return [Expression.safeString(this.lookupFn)];
};
LookupExpression.prototype.fullyDefined = function () {
return false;
};
LookupExpression.prototype._calcChainableHelper = function (_operandValue) {
throw new Error('can not express as JS');
};
LookupExpression.prototype._getSQLChainableHelper = function (dialect, operandSQL) {
return dialect.lookupExpression(operandSQL, this.lookupFn);
};
LookupExpression.op = 'Lookup';
return LookupExpression;
}(ChainableExpression));
export { LookupExpression };
Expression.register(LookupExpression);