src/UpdateNodeTagsHandler.php
<?php
declare(strict_types=1);
namespace Gdbots\Ncr;
use Gdbots\Pbj\Message;
use Gdbots\Pbj\WellKnown\NodeRef;
use Gdbots\Pbjx\CommandHandler;
use Gdbots\Pbjx\Pbjx;
class UpdateNodeTagsHandler implements CommandHandler
{
protected Ncr $ncr;
public static function handlesCuries(): array
{
return [
'gdbots:ncr:command:update-node-tags',
];
}
public function __construct(Ncr $ncr)
{
$this->ncr = $ncr;
}
public function handleCommand(Message $command, Pbjx $pbjx): void
{
/** @var NodeRef $nodeRef */
$nodeRef = $command->get('node_ref');
$context = ['causator' => $command];
$node = $this->ncr->getNode($nodeRef, true, $context);
$aggregate = AggregateResolver::resolve($nodeRef->getQName())::fromNode($node, $pbjx);
$aggregate->sync($context);
$aggregate->updateNodeTags($command);
$aggregate->commit($context);
}
}