vendor/monsieurbiz/sylius-search-plugin/src/Search/Search.php line 57

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of Monsieur Biz' Search plugin for Sylius.
  4.  *
  5.  * (c) Monsieur Biz <sylius@monsieurbiz.com>
  6.  *
  7.  * For the full copyright and license information, please view the LICENSE.txt
  8.  * file that was distributed with this source code.
  9.  */
  10. declare(strict_types=1);
  11. namespace MonsieurBiz\SyliusSearchPlugin\Search;
  12. use MonsieurBiz\SyliusSearchPlugin\Exception\UnknownRequestTypeException;
  13. use MonsieurBiz\SyliusSearchPlugin\Search\Request\RequestConfiguration;
  14. use MonsieurBiz\SyliusSearchPlugin\Search\Request\RequestHandler;
  15. use Pagerfanta\Elastica\ElasticaAdapter;
  16. use Sylius\Component\Locale\Context\LocaleContextInterface;
  17. class Search implements SearchInterface
  18. {
  19.     private LocaleContextInterface $localeContext;
  20.     private RequestHandler $requestHandler;
  21.     private ClientFactory $clientFactory;
  22.     private ResponseFactory $responseFactory;
  23.     public function __construct(
  24.         ClientFactory $clientFactory,
  25.         LocaleContextInterface $localeContext,
  26.         RequestHandler $requestHandler,
  27.         ResponseFactory $responseFactory
  28.     ) {
  29.         $this->localeContext $localeContext;
  30.         $this->requestHandler $requestHandler;
  31.         $this->clientFactory $clientFactory;
  32.         $this->responseFactory $responseFactory;
  33.     }
  34.     /**
  35.      * @throws UnknownRequestTypeException
  36.      */
  37.     public function search(RequestConfiguration $requestConfiguration): ResponseInterface
  38.     {
  39.         $request $this->requestHandler->getRequest($requestConfiguration);
  40.         $indexName $this->clientFactory->getIndexName($request->getDocumentable(), $this->localeContext->getLocaleCode());
  41.         $client $this->clientFactory->getClient($request->getDocumentable(), $this->localeContext->getLocaleCode());
  42.         return $this->responseFactory->build(
  43.             $requestConfiguration,
  44.             new ElasticaAdapter($client->getIndex($indexName), $request->getQuery()),
  45.             $request->getDocumentable()
  46.         );
  47.     }
  48. }