ts-odata-client
Version:
OData TypeScript Client
81 lines (80 loc) • 4.79 kB
JavaScript
;
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;