UNPKG

sphinxql

Version:

SphinxQL query builder for Node.JS. Supports Sphinx search(2.x and 3.x) and Manticore search

90 lines 3.53 kB
"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