UNPKG

@configurator/ravendb

Version:
111 lines 5.42 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.OrderByToken = void 0; const QueryToken_1 = require("./QueryToken"); const Exceptions_1 = require("../../../Exceptions"); const Constants_1 = require("../../../Constants"); class OrderByToken extends QueryToken_1.QueryToken { constructor(fieldName, descending, options, isMethodField) { super(); this._fieldName = fieldName; this._descending = descending; this._ordering = options.ordering; this._sorterName = options.sorterName; this._isMethodField = isMethodField; } static createDistanceAscending(fieldName, shapeWktOrLatitudeParameterName, longitudeParameterName, roundFactorParameterName) { if (longitudeParameterName) { return this._createDistanceAscendingLatLng(fieldName, shapeWktOrLatitudeParameterName, longitudeParameterName, roundFactorParameterName); } else { return this._createDistanceAscendingWkt(fieldName, shapeWktOrLatitudeParameterName, roundFactorParameterName); } } static _createDistanceAscendingLatLng(fieldName, latitudeParameterName, longitudeParameterName, roundFactorParameterName) { return new OrderByToken("spatial.distance(" + fieldName + ", spatial.point($" + latitudeParameterName + ", $" + longitudeParameterName + ")" + (roundFactorParameterName ? ", $" + roundFactorParameterName : "") + ")", false, { ordering: "String" }, true); } static _createDistanceAscendingWkt(fieldName, shapeWktParameterName, roundFactorParameterName) { return new OrderByToken("spatial.distance(" + fieldName + ", spatial.wkt($" + shapeWktParameterName + ")" + (roundFactorParameterName ? ", $" + roundFactorParameterName : "") + ")", false, { ordering: "String" }, true); } static _createDistanceDescendingLatLng(fieldName, latitudeParameterName, longitudeParameterName, roundFactorParameterName) { return new OrderByToken("spatial.distance(" + fieldName + ", spatial.point($" + latitudeParameterName + ", $" + longitudeParameterName + ")" + (roundFactorParameterName ? ", $" + roundFactorParameterName : "") + ")", true, { ordering: "String" }, true); } static _createDistanceDescendingWkt(fieldName, shapeWktParameterName, roundFactorParameterName) { return new OrderByToken("spatial.distance(" + fieldName + ", spatial.wkt($" + shapeWktParameterName + ")" + (roundFactorParameterName ? ", $" + roundFactorParameterName : "") + ")", true, { ordering: "String" }, true); } static createDistanceDescending(fieldName, shapeWktOrLatitudeParameterName, longitudeParameterName, roundFactorParameterName) { if (longitudeParameterName) { return this._createDistanceDescendingLatLng(fieldName, shapeWktOrLatitudeParameterName, longitudeParameterName, roundFactorParameterName); } else { return this._createDistanceDescendingWkt(fieldName, shapeWktOrLatitudeParameterName, roundFactorParameterName); } } static createRandom(seed) { if (!seed) { (0, Exceptions_1.throwError)("InvalidArgumentException", "seed cannot be null"); } return new OrderByToken("random('" + seed.replace(/'/g, "''") + "')", false, { ordering: "String" }, true); } static createAscending(fieldName, options) { return new OrderByToken(fieldName, false, options, false); } static createDescending(fieldName, options) { return new OrderByToken(fieldName, true, options, false); } writeTo(writer) { if (this._sorterName) { writer .append("custom("); } QueryToken_1.QueryToken.writeField(writer, this._fieldName); if (this._sorterName) { writer .append(", '") .append(this._sorterName) .append("')"); } else { switch (this._ordering) { case "Long": writer.append(" as long"); break; case "Double": writer.append(" as double"); break; case "AlphaNumeric": writer.append(" as alphaNumeric"); break; } } if (this._descending) { writer.append(" desc"); } } addAlias(alias) { if (Constants_1.CONSTANTS.Documents.Indexing.Fields.DOCUMENT_ID_FIELD_NAME === this._fieldName) { return this; } if (this._isMethodField) { return this; } const aliasedName = alias + "." + this._fieldName; if (this._sorterName) { return new OrderByToken(aliasedName, this._descending, { sorterName: this._sorterName }, false); } else { return new OrderByToken(aliasedName, this._descending, { ordering: this._ordering }, false); } } } exports.OrderByToken = OrderByToken; OrderByToken.random = new OrderByToken("random()", false, { ordering: "String" }, true); OrderByToken.scoreAscending = new OrderByToken("score()", false, { ordering: "String" }, true); OrderByToken.scoreDescending = new OrderByToken("score()", true, { ordering: "String" }, true); //# sourceMappingURL=OrderByToken.js.map