@comunica/actor-query-operation-minus
Version:
A minus query-operation actor
36 lines • 1.65 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ActorQueryOperationMinus = void 0;
const bus_query_operation_1 = require("@comunica/bus-query-operation");
const core_1 = require("@comunica/core");
const utils_algebra_1 = require("@comunica/utils-algebra");
const utils_query_operation_1 = require("@comunica/utils-query-operation");
/**
* A comunica Minus Query Operation Actor.
*/
class ActorQueryOperationMinus extends bus_query_operation_1.ActorQueryOperationTypedMediated {
mediatorJoin;
constructor(args) {
super(args, utils_algebra_1.Algebra.Types.MINUS);
this.mediatorJoin = args.mediatorJoin;
}
async testOperation(_operation, _context) {
return (0, core_1.passTestVoid)();
}
async runOperation(operationOriginal, context) {
// Propagate information about GRAPH ?g existing outside the MINUS scope to the join actor.
const graphVariableFromParentScope = operationOriginal.graphScopeVar;
const entries = (await Promise.all(operationOriginal.input
.map(async (subOperation) => ({
output: await this.mediatorQueryOperation.mediate({ operation: subOperation, context }),
operation: subOperation,
}))))
.map(({ output, operation }) => ({
output: (0, utils_query_operation_1.getSafeBindings)(output),
operation,
}));
return this.mediatorJoin.mediate({ type: 'minus', entries, context, graphVariableFromParentScope });
}
}
exports.ActorQueryOperationMinus = ActorQueryOperationMinus;
//# sourceMappingURL=ActorQueryOperationMinus.js.map