UNPKG

ts-odata-client

Version:
81 lines (80 loc) 4.79 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ProxyPropertyPredicate = void 0; var BooleanPredicateBuilder_1 = require("./BooleanPredicateBuilder"); var Expression_1 = require("./Expression"); var FieldReference_1 = require("./FieldReference"); var FilterAccessoryFunctions_1 = require("./FilterAccessoryFunctions"); var ProxyFilterTypes_1 = require("./ProxyFilterTypes"); var ProxyTypes_1 = require("./ProxyTypes"); var ProxyPropertyPredicate = /** @class */ (function () { function ProxyPropertyPredicate(propertyProxy, provider) { this.provider = provider; this.fieldReference = this.getFieldReference(propertyProxy); } ProxyPropertyPredicate.prototype.equals = function (value) { return this.buildPredicateBuilder(value, "equals" /* ExpressionOperator.Equals */); }; ProxyPropertyPredicate.prototype.notEquals = function (value) { return this.buildPredicateBuilder(value, "notEquals" /* ExpressionOperator.NotEquals */); }; ProxyPropertyPredicate.prototype.in = function (value) { return this.buildPredicateBuilder(Array.from(value), "in" /* ExpressionOperator.In */); }; ProxyPropertyPredicate.prototype.lessThan = function (value) { return this.buildPredicateBuilder(value, "lessThan" /* ExpressionOperator.LessThan */); }; ProxyPropertyPredicate.prototype.lessThanOrEqualTo = function (value) { return this.buildPredicateBuilder(value, "lessThanOrEqualTo" /* ExpressionOperator.LessThanOrEqualTo */); }; ProxyPropertyPredicate.prototype.greaterThan = function (value) { return this.buildPredicateBuilder(value, "greaterThan" /* ExpressionOperator.GreaterThan */); }; ProxyPropertyPredicate.prototype.greaterThanOrEqualTo = function (value) { return this.buildPredicateBuilder(value, "greaterThanOrEqualTo" /* ExpressionOperator.GreaterThanOrEqualTo */); }; ProxyPropertyPredicate.prototype.contains = function (value) { return this.buildPredicateBuilder(value, "contains" /* ExpressionOperator.Contains */); }; ProxyPropertyPredicate.prototype.startsWith = function (value) { return this.buildPredicateBuilder(value, "startsWith" /* ExpressionOperator.StartsWith */); }; ProxyPropertyPredicate.prototype.endsWith = function (value) { return this.buildPredicateBuilder(value, "endsWith" /* ExpressionOperator.EndsWith */); }; ProxyPropertyPredicate.prototype.any = function (value) { var proxy = this.provider[ProxyFilterTypes_1.createProxiedEntity](true); var expression = value(proxy, new FilterAccessoryFunctions_1.FilterAccessoryFunctions()).expression; return this.buildCollectionFilterPredicateBuilder(expression, "any" /* ExpressionOperator.Any */, proxy); }; ProxyPropertyPredicate.prototype.all = function (value) { var proxy = this.provider[ProxyFilterTypes_1.createProxiedEntity](true); var expression = value(proxy, new FilterAccessoryFunctions_1.FilterAccessoryFunctions()).expression; return this.buildCollectionFilterPredicateBuilder(expression, "all" /* ExpressionOperator.All */, proxy); }; ProxyPropertyPredicate.prototype.buildCollectionFilterPredicateBuilder = function (value, operator, proxy) { var operand = value; var propertyPaths = value == null ? null : typeof value === "object" && ProxyTypes_1.propertyPath in value ? value[ProxyTypes_1.propertyPath] : undefined; if (propertyPaths != null) { operand = this.getFieldReference(value); } var expression = new Expression_1.Expression(operator, [this.fieldReference, new String(proxy[ProxyTypes_1.lambdaVariable]), operand]); return new BooleanPredicateBuilder_1.BooleanPredicateBuilder(expression); }; ProxyPropertyPredicate.prototype.buildPredicateBuilder = function (value, operator) { var operand = value; var propertyPaths = value == null ? null : typeof value === "object" && ProxyTypes_1.propertyPath in value ? value[ProxyTypes_1.propertyPath] : undefined; if (propertyPaths != null) { operand = this.getFieldReference(value); } var expression = new Expression_1.Expression(operator, [this.fieldReference, operand]); return new BooleanPredicateBuilder_1.BooleanPredicateBuilder(expression); }; ProxyPropertyPredicate.prototype.getFieldReference = function (propertyProxy) { var propertyPaths = propertyProxy[ProxyTypes_1.propertyPath]; // TODO: Better handle typing here return new FieldReference_1.FieldReference(propertyPaths.join("/")); }; return ProxyPropertyPredicate; }()); exports.ProxyPropertyPredicate = ProxyPropertyPredicate;