/** * {@inheritdoc} */ public function process(ContextInterface $context) { /** @var GetListContext $context */ if ($context->hasResult()) { // result data are already retrieved return; } $query = $context->getQuery(); if (!$query instanceof SearchQuery) { // unsupported query return; } $searchResult = $this->searchIndex->query($query); $context->setResult($searchResult->toArray()); // set callback to be used to calculate total count $context->setTotalCountCallback(function () use($searchResult) { return $searchResult->getRecordsCount(); }); }