ClassSelectQuery::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 10
rs 9.9332
c 0
b 0
f 0
cc 1
nc 1
nop 4
1
<?php
2
3
namespace Mdiyakov\DoctrineSolrBundle\Query\Select;
4
5
use Solarium\Client;
6
use Solarium\QueryType\Select\Result\Result;
7
use Mdiyakov\DoctrineSolrBundle\Query\Hydrator\SelectQueryHydrator;
8
use Mdiyakov\DoctrineSolrBundle\Schema\Schema;
9
10
class ClassSelectQuery extends AbstractSelectQuery
11
{
12
    /**
13
     * @var array
14
     */
15
    private $entityConfig;
16
17
    /**
18
     * @var SelectQueryHydrator
19
     */
20
    private $hydrator;
21
22
    /**
23
     * @param Client $client
24
     * @param Schema $schema
25
     * @param string[] $entityConfig
26
     * @param SelectQueryHydrator $hydrator
27
     */
28
    public function __construct(
29
        Client $client,
30
        Schema $schema,
31
        $entityConfig,
32
        SelectQueryHydrator $hydrator
33
    )
34
    {
35
        $this->entityConfig = $entityConfig;
36
        $this->hydrator = $hydrator;
37
        parent::__construct($client, $schema);
38
    }
39
40
    /**
41
     * @param Result $result
42
     * @return \object[]
43
     */
44
    protected function transformResponse(Result $result)
45
    {
46
        $documentsArray = $result->getData()['response']['docs'];
47
48
        return $this->hydrator->hydrate($documentsArray);
49
    }
50
51
    protected function initDiscriminatorConditions()
52
    {
53
        $discriminatorConfigField = $this->getSchema()->getDiscriminatorConfigField();
54
        $this->discriminatorConditions[] = sprintf(
55
            '%s:"%s"',
56
            $discriminatorConfigField->getDocumentFieldName(),
57
            $discriminatorConfigField->getValue($this->entityConfig)
58
        );
59
    }
60
61
}