@comunica/actor-bindings-aggregator-factory-count
Version:
A count bindings aggregator factory actor
27 lines • 1.32 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ActorBindingsAggregatorFactoryCount = void 0;
const bus_bindings_aggregator_factory_1 = require("@comunica/bus-bindings-aggregator-factory");
const core_1 = require("@comunica/core");
const utils_algebra_1 = require("@comunica/utils-algebra");
const CountAggregator_1 = require("./CountAggregator");
/**
* A comunica Count Expression Evaluator Aggregate Actor.
*/
class ActorBindingsAggregatorFactoryCount extends bus_bindings_aggregator_factory_1.ActorBindingsAggregatorFactory {
constructor(args) {
super(args);
}
async test(action) {
if (action.expr.aggregator !== 'count' ||
action.expr.expression.subType === utils_algebra_1.Algebra.ExpressionTypes.WILDCARD) {
return (0, core_1.failTest)('This actor only supports the \'count\' aggregator without wildcard.');
}
return (0, core_1.passTestVoid)();
}
async run({ context, expr }) {
return new CountAggregator_1.CountAggregator(await this.mediatorExpressionEvaluatorFactory.mediate({ algExpr: expr.expression, context }), expr.distinct);
}
}
exports.ActorBindingsAggregatorFactoryCount = ActorBindingsAggregatorFactoryCount;
//# sourceMappingURL=ActorBindingsAggregatorFactoryCount.js.map