Passed
Push — master ( f51d93...08b37c )
by Mike
02:59
created

ResultSetConverter::convertResult()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 15
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 12
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 11
nc 1
nop 1
dl 0
loc 15
ccs 12
cts 12
cp 1
crap 1
rs 9.9
c 0
b 0
f 0
1
<?php
2
declare(strict_types=1);
3
4
namespace Xervice\Elasticsearch\Business\Model\Search\Result;
5
6
7
use DataProvider\ElasticSearchRawResultDataProvider;
8
use DataProvider\ElasticsearchResultSetDataProvider;
9
use Elastica\ResultSet;
10
use Xervice\Elasticsearch\Dependency\Plugin\ResultFormatterPluginInterface;
11
12
class ResultSetConverter implements ResultSetConverterInterface
13
{
14
    /**
15
     * @var \Xervice\Elasticsearch\Dependency\Plugin\ResultFormatterPluginInterface[]
16
     */
17
    private $formatterPlugins;
18
19
    /**
20
     * ResultSetConverter constructor.
21
     *
22
     * @param array $formatterPlugins
23
     */
24 1
    public function __construct(array $formatterPlugins)
25
    {
26 1
        $this->formatterPlugins = $formatterPlugins;
27 1
    }
28
29
    /**
30
     * @param \Elastica\ResultSet $resultSet
31
     *
32
     * @return \DataProvider\ElasticsearchResultSetDataProvider
33
     */
34 1
    public function convertResult(ResultSet $resultSet): ElasticsearchResultSetDataProvider
35
    {
36 1
        $result = (new ElasticsearchResultSetDataProvider())
37 1
            ->setTotalHits($resultSet->getTotalHits())
38 1
            ->setTotalTime($resultSet->getTotalTime())
39 1
            ->setMaxScore($resultSet->getMaxScore())
40 1
            ->setRawResults(
41 1
                (new ElasticSearchRawResultDataProvider())
42 1
                    ->setDocuments($resultSet->getDocuments())
43 1
                    ->setAggregations($resultSet->getAggregations())
44 1
                    ->setSuggests($resultSet->getSuggests())
45 1
                    ->setResults($resultSet->getResults())
46
            );
47
48 1
        return $this->loopFormatterPlugins($result);
49
    }
50
51
    /**
52
     * @param \DataProvider\ElasticsearchResultSetDataProvider $resultSetDataProvider
53
     *
54
     * @return \DataProvider\ElasticsearchResultSetDataProvider
55
     */
56 1
    protected function loopFormatterPlugins(
57
        ElasticsearchResultSetDataProvider $resultSetDataProvider
58
    ): ElasticsearchResultSetDataProvider {
59 1
        foreach ($this->formatterPlugins as $formatterPlugin) {
60
            $resultSetDataProvider = $formatterPlugin->formatResult($resultSetDataProvider);
61
        }
62
63 1
        return $resultSetDataProvider;
64
    }
65
}