ts-flex-query
Version:
Flexible and type-safe data queries
18 lines • 1.13 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.groupAndAggregate = groupAndAggregate;
const pipe_expression_1 = require("../../helpers/pipe-expression");
const query_factory_1 = require("../../helpers/query-factory");
const field_1 = require("../basic/field");
const group_1 = require("../basic/group");
const map_1 = require("../basic/map");
const merge_1 = require("./merge");
const no_op_1 = require("./no-op");
const query_schema_1 = require("./query-schema");
const record_1 = require("./record");
function groupAndAggregate(groupValueSchema, aggregates) {
return new query_factory_1.QueryFactory().create((0, group_1.groupBy)((0, query_schema_1.createOperatorForSchema)(groupValueSchema, null)), (0, map_1.map)((group) => (0, pipe_expression_1.pipeExpression)(group, (0, field_1.field)(group_1.GroupOperator.groupValueField), aggregates
? (0, merge_1.merge)((0, pipe_expression_1.pipeExpression)(group, (0, field_1.field)(group_1.GroupOperator.elementsField), (0, record_1.record)(aggregates)))
: (0, no_op_1.noOp)())));
}
//# sourceMappingURL=group-and-aggregate.js.map