sphinxql
Version:
SphinxQL query builder for Node.JS. Supports Sphinx search(2.x and 3.x) and Manticore search
90 lines • 3.53 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var Expression_1 = require("./Expression");
var LimitExprStatement_1 = require("./statement_expressions/LimitExprStatement");
var OrderByExprStatement_1 = require("./statement_expressions/OrderByExprStatement");
var FacetStatement = (function () {
function FacetStatement(connection) {
this.connection = connection;
this.fieldColumns = [];
this.byExpressions = [];
}
FacetStatement.prototype.field = function (column) {
if (column instanceof Expression_1.default) {
this.fieldColumns = tslib_1.__spreadArrays(this.fieldColumns, [column.getExpression()]);
}
else {
this.fieldColumns = tslib_1.__spreadArrays(this.fieldColumns, [column]);
}
return this;
};
FacetStatement.prototype.fields = function (columns) {
var results = this.getExpressions(columns);
this.fieldColumns = tslib_1.__spreadArrays(this.fieldColumns, results);
return this;
};
FacetStatement.prototype.getExpressions = function (exprList) {
var results = exprList.map(function (expr) {
if (expr instanceof Expression_1.default) {
return expr.getExpression();
}
return expr;
});
return results;
};
FacetStatement.prototype.by = function (expressions) {
var results = this.getExpressions(expressions);
this.byExpressions = tslib_1.__spreadArrays(this.byExpressions, results);
return this;
};
FacetStatement.prototype.orderBy = function (expression, order) {
if (order === void 0) { order = 'DESC'; }
if (expression instanceof Expression_1.default) {
this.orderByExpression = new OrderByExprStatement_1.default(expression.getExpression(), order);
}
else {
this.orderByExpression = new OrderByExprStatement_1.default(expression, order);
}
return this;
};
FacetStatement.prototype.offset = function (offset) {
if (offset === void 0) { offset = 0; }
if (this.limitExpression !== undefined) {
this.limitExpression.setOffset(offset);
}
else {
this.limitExpression = new LimitExprStatement_1.default(offset);
}
return this;
};
FacetStatement.prototype.limit = function (size) {
if (size === void 0) { size = 5; }
if (this.limitExpression !== undefined) {
this.limitExpression.setSize(size);
}
else {
this.limitExpression = new LimitExprStatement_1.default(0, size);
}
return this;
};
FacetStatement.prototype.build = function () {
var statement = '';
if (this.fieldColumns.length) {
statement += this.fieldColumns.join(', ');
}
if (this.byExpressions.length) {
statement += " BY " + this.byExpressions.join(', ');
}
if (this.orderByExpression !== undefined) {
statement += " ORDER BY " + this.orderByExpression.build();
}
if (this.limitExpression !== undefined) {
statement += " LIMIT " + this.limitExpression.build();
}
return statement;
};
return FacetStatement;
}());
exports.default = FacetStatement;
//# sourceMappingURL=FacetStatement.js.map