Skip to content

Commit

Permalink
OP-225: Facets resolver
Browse files Browse the repository at this point in the history
  • Loading branch information
GracjanJozefczyk committed May 27, 2024
1 parent 80bdbda commit b03f674
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 0 deletions.
34 changes: 34 additions & 0 deletions src/Form/Resolver/FacetsResolver.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
<?php

declare(strict_types=1);

namespace BitBag\SyliusElasticsearchPlugin\Form\Resolver;

use BitBag\SyliusElasticsearchPlugin\Facet\RegistryInterface;
use BitBag\SyliusElasticsearchPlugin\QueryBuilder\FormQueryBuilder\SiteWideFacetsQueryBuilderInterface;
use FOS\ElasticaBundle\Finder\PaginatedFinderInterface;
use Pagerfanta\Pagerfanta;
use Symfony\Component\Form\FormEvent;

final class FacetsResolver implements ProductsFilterFacetResolverInterface
{
public function __construct(
private SiteWideFacetsQueryBuilderInterface $queryBuilder,
private RegistryInterface $facetRegistry,
private PaginatedFinderInterface $finder
) {
}

public function resolveFacets(FormEvent $event, string $namePropertyPrefix): Pagerfanta
{
$query = $this->queryBuilder->getQuery($event);

foreach ($this->facetRegistry->getFacets() as $facetId => $facet) {
$query->addAggregation($facet->getAggregation()->setName($facetId));
}

$query->setSize(0);

return $this->finder->findPaginated($query);
}
}
12 changes: 12 additions & 0 deletions src/Form/Resolver/FacetsResolverInterface.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?php

namespace BitBag\SyliusElasticsearchPlugin\Form\Resolver;

use Pagerfanta\Pagerfanta;
use Symfony\Component\Form\FormEvent;

interface FacetsResolverInterface
{
public function resolveFacets(FormEvent $event): Pagerfanta;

}

0 comments on commit b03f674

Please sign in to comment.