UNPKG

breeze2-odata4

Version:

Library to allow OData 4 support for breezejs 2

90 lines 3.56 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var breeze_client_1 = require("breeze-client"); var OData4PredicateVisitor = (function () { function OData4PredicateVisitor() { } OData4PredicateVisitor.register = function () { var visitor = new OData4PredicateVisitor(); var PredicatePrototype = breeze_client_1.Predicate.prototype; PredicatePrototype.toODataFragment = function (context) { return this.visit(context, visitor); }; }; OData4PredicateVisitor.prototype.passthruPredicate = function () { return this.value; }; OData4PredicateVisitor.prototype.unaryPredicate = function (context) { var predVal = this.pred.visit(context); var op = this.op.key; return op + " (" + predVal + ")"; }; OData4PredicateVisitor.prototype.binaryPredicate = function (context) { var expr1Val = this.expr1.visit(context); var expr2Val = this.expr2.visit(context); var prefix = context.prefix; if (prefix) { expr1Val = prefix + "/" + expr1Val; } var op = this.op.key; if (op === 'in') { var result = expr2Val.map(function (v) { return "(" + expr1Val + " eq " + v + ")"; }).join(' or '); return result; } else if (this.op.isFunction) { return op + "(" + expr1Val + "," + expr2Val + ")"; } else { return expr1Val + " " + op + " " + expr2Val; } }; OData4PredicateVisitor.prototype.andOrPredicate = function (context) { var op = this.op.key; var result = this.preds .map(function (pred) { return "(" + pred.visit(context) + ")"; }) .join(" " + op + " "); return result; }; OData4PredicateVisitor.prototype.anyAllPredicate = function (context) { var op = this.op.key; var exprVal = this.expr.visit(context); if (!this.pred.op) { return exprVal + "/" + op + "()"; } var prefix = context.prefix; var idx = 1; if (prefix) { exprVal = prefix + "/" + exprVal; idx = Number(prefix.substring(1)) + 1; } prefix = "x" + idx; var newContext = Object.assign({}, context, { entityType: this.expr.dataType, prefix: prefix }); var newPredVal = this.pred.visit(newContext); return exprVal + "/" + op + "(" + prefix + ": " + newPredVal + ")"; }; OData4PredicateVisitor.prototype.litExpr = function () { var _this = this; if (Array.isArray(this.value)) { return this.value.map(function (v) { return _this.dataType.fmtOData(v); }); } else { return this.dataType.fmtOData(this.value); } }; OData4PredicateVisitor.prototype.propExpr = function (context) { var entityType = context.entityType; return entityType ? entityType.clientPropertyPathToServer(this.propertyPath, '/') : this.propertyPath; }; OData4PredicateVisitor.prototype.fnExpr = function (context) { var exprVals = this.exprs.map(function (expr) { return expr.visit(context); }); return this.fnName + "(" + exprVals + ")"; }; return OData4PredicateVisitor; }()); exports.OData4PredicateVisitor = OData4PredicateVisitor; //# sourceMappingURL=breeze-odata4-predicateVisitor.js.map