ravendb
Version:
RavenDB client for Node.js
119 lines • 5.69 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.OrderByToken = void 0;
const QueryToken_js_1 = require("./QueryToken.js");
const index_js_1 = require("../../../Exceptions/index.js");
const Constants_js_1 = require("../../../Constants.js");
class OrderByToken extends QueryToken_js_1.QueryToken {
_fieldName;
_descending;
_sorterName;
_ordering;
_isMethodField;
constructor(fieldName, descending, options, isMethodField) {
super();
this._fieldName = fieldName;
this._descending = descending;
this._ordering = options.ordering;
this._sorterName = options.sorterName;
this._isMethodField = isMethodField;
}
static random = new OrderByToken("random()", false, { ordering: "String" }, true);
static scoreAscending = new OrderByToken("score()", false, { ordering: "String" }, true);
static scoreDescending = new OrderByToken("score()", true, { ordering: "String" }, true);
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, index_js_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_js_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) { // we only add this if we have to, ASC is the default and reads nicer
writer.append(" desc");
}
}
addAlias(alias) {
if (Constants_js_1.CONSTANTS.Documents.Indexing.Fields.DOCUMENT_ID_FIELD_NAME === this._fieldName) {
return this;
}
if (this._isMethodField) { // we must not alias RQL methods
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;
//# sourceMappingURL=OrderByToken.js.map