plywood
Version:
A query planner and executor
55 lines (54 loc) • 2.36 kB
JavaScript
import { __extends } from "tslib";
import { generalArraysEqual } from 'immutable-class';
import { handleNullCheckIfNeeded } from '../helper';
import { ChainableExpression, Expression } from './baseExpression';
var MvContainsExpression = (function (_super) {
__extends(MvContainsExpression, _super);
function MvContainsExpression(parameters) {
var _this = _super.call(this, parameters, dummyObject) || this;
_this._ensureOp('mvContains');
_this._checkOperandTypes('STRING');
_this.mvArray = parameters.mvArray;
_this.type = 'BOOLEAN';
return _this;
}
MvContainsExpression.fromJS = function (parameters) {
var value = ChainableExpression.jsToValue(parameters);
value.mvArray = parameters.mvArray;
return new MvContainsExpression(value);
};
MvContainsExpression.prototype.valueOf = function () {
var value = _super.prototype.valueOf.call(this);
value.mvArray = this.mvArray;
return value;
};
MvContainsExpression.prototype.toJS = function () {
var js = _super.prototype.toJS.call(this);
js.mvArray = this.mvArray;
return js;
};
MvContainsExpression.prototype.equals = function (other) {
return _super.prototype.equals.call(this, other) && generalArraysEqual(this.mvArray, other.mvArray);
};
MvContainsExpression.prototype._toStringParameters = function (_indent) {
return this.mvArray;
};
MvContainsExpression.prototype._calcChainableHelper = function (operandValue) {
var _this = this;
var operandArray = typeof operandValue === 'string'
? [operandValue]
: Array.isArray(operandValue)
? operandValue
: [];
return operandArray.every(function (element) { return _this.mvArray.includes(element); });
};
MvContainsExpression.prototype._getSQLChainableHelper = function (dialect, operandSQL) {
return handleNullCheckIfNeeded(this.mvArray, "".concat(operandSQL, " IS NULL"), 'AND', function (withoutNull) {
return dialect.mvContainsExpression(operandSQL, withoutNull);
});
};
MvContainsExpression.op = 'MvContains';
return MvContainsExpression;
}(ChainableExpression));
export { MvContainsExpression };
Expression.register(MvContainsExpression);