UNPKG

ts-flex-query

Version:
31 lines 1.39 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SortOperator = void 0; exports.orderBy = orderBy; const sort_1 = require("../../expressions/sort"); const variable_1 = require("../../expressions/variable"); const object_value_selector_1 = require("../../helpers/object-value-selector"); const data_type_1 = require("../../types/data-type"); class SortOperator { constructor(specs) { this.specs = specs; } instantiate(input) { const variableSymbol = Symbol('vSort'); const inputType = input.dataType; const variableExpr = (0, variable_1.variable)(inputType.type === data_type_1.DataTypeType.array ? inputType.elementType : { type: data_type_1.DataTypeType.unknown }, variableSymbol); const specs = this.specs.map((spec) => ({ value: (0, object_value_selector_1.createQueryFromObjectValueSelector)(spec.value).instantiate(variableExpr), isAscending: spec.isAscending })); return new sort_1.SortExpression(input, variableSymbol, specs); } } exports.SortOperator = SortOperator; function orderBy(...elements) { const specs = elements.map((element) => Array.isArray(element) ? { value: element[0], isAscending: element[1] === 'asc' } : { value: element, isAscending: true }); return new SortOperator(specs); } //# sourceMappingURL=sort.js.map