ts-flex-query
Version:
Flexible and type-safe data queries
28 lines • 1.34 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.GroupOperator = void 0;
exports.groupBy = groupBy;
const group_1 = require("../../expressions/group");
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 GroupOperator {
constructor(groupValue) {
this.groupValue = groupValue;
}
instantiate(input) {
const variableSymbol = Symbol('vGroup');
const variableType = input.dataType.type === data_type_1.DataTypeType.array
? input.dataType.elementType
: { type: data_type_1.DataTypeType.unknown };
const variableExpression = (0, variable_1.variable)(variableType, variableSymbol);
return new group_1.GroupExpression(input, variableSymbol, this.groupValue(variableExpression), GroupOperator.elementsField, GroupOperator.groupValueField);
}
}
exports.GroupOperator = GroupOperator;
GroupOperator.elementsField = 'elements';
GroupOperator.groupValueField = 'key';
function groupBy(groupValueSelector) {
return new GroupOperator((element) => (0, object_value_selector_1.createQueryFromObjectValueSelector)(groupValueSelector).instantiate(element));
}
//# sourceMappingURL=group.js.map