Passed
Push — master ( 08b37c...1ffe05 )
by Mike
02:17
created

createDocumentCleaner()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 0
dl 0
loc 4
ccs 3
cts 3
cp 1
crap 1
rs 10
c 0
b 0
f 0
1
<?php
2
declare(strict_types=1);
3
4
namespace Xervice\Elasticsearch\Business;
5
6
7
use Elastica\Client;
8
use Xervice\Core\Business\Model\Factory\AbstractBusinessFactory;
9
use Xervice\Elasticsearch\Business\Collection\IndexCollection;
10
use Xervice\Elasticsearch\Business\Model\Document\DocumentBuilder;
11
use Xervice\Elasticsearch\Business\Model\Document\DocumentBuilderInterface;
12
use Xervice\Elasticsearch\Business\Model\Document\DocumentCleaner;
13
use Xervice\Elasticsearch\Business\Model\Document\DocumentCleanerInterface;
14
use Xervice\Elasticsearch\Business\Model\Index\IndexBuilder;
15
use Xervice\Elasticsearch\Business\Model\Index\IndexBuilderInterface;
16
use Xervice\Elasticsearch\Business\Model\Index\MappingConverter;
17
use Xervice\Elasticsearch\Business\Model\Index\MappingConverterInterface;
18
use Xervice\Elasticsearch\Business\Model\Indexer;
19
use Xervice\Elasticsearch\Business\Model\IndexerInterface;
20
use Xervice\Elasticsearch\Business\Model\Search\Query\QueryBuilder;
21
use Xervice\Elasticsearch\Business\Model\Search\Query\QueryBuilderInterface;
22
use Xervice\Elasticsearch\Business\Model\Search\Result\ResultSetConverter;
23
use Xervice\Elasticsearch\Business\Model\Search\Result\ResultSetConverterInterface;
24
use Xervice\Elasticsearch\Business\Model\Search\Search;
25
use Xervice\Elasticsearch\Business\Model\Search\SearchInterface;
26
use Xervice\Elasticsearch\ElasticsearchDependencyProvider;
27
28
/**
29
 * @method \Xervice\Elasticsearch\ElasticsearchConfig getConfig()
30
 */
31
class ElasticsearchBusinessFactory extends AbstractBusinessFactory
32
{
33
    /**
34
     * @param array $queryExtenderPlugins
35
     * @param array $resultFormatterPlugins
36
     *
37
     * @return \Xervice\Elasticsearch\Business\Model\Search\SearchInterface
38
     */
39 1
    public function createSearch(
40
        array $queryExtenderPlugins,
41
        array $resultFormatterPlugins
42
    ): SearchInterface {
43 1
        return new Search(
44 1
            $this->getClient(),
45 1
            $this->createQueryBuilder($queryExtenderPlugins),
46 1
            $this->createResultSetConverter($resultFormatterPlugins)
47
        );
48
    }
49
50
    /**
51
     * @param array $queryExtenderPlugins
52
     *
53
     * @return \Xervice\Elasticsearch\Business\Model\Search\Query\QueryBuilderInterface
54
     */
55 1
    public function createQueryBuilder(array $queryExtenderPlugins): QueryBuilderInterface
56
    {
57 1
        return new QueryBuilder(
58 1
            $queryExtenderPlugins
59
        );
60
    }
61
62
    /**
63
     * @param array $resultFormatterPlugins
64
     *
65
     * @return \Xervice\Elasticsearch\Business\Model\Search\Result\ResultSetConverterInterface
66
     */
67 1
    public function createResultSetConverter(array $resultFormatterPlugins): ResultSetConverterInterface
68
    {
69 1
        return new ResultSetConverter(
70 1
            $resultFormatterPlugins
71
        );
72
    }
73
74
    /**
75
     * @return \Xervice\Elasticsearch\Business\Model\Document\DocumentCleanerInterface
76
     */
77 1
    public function createDocumentCleaner(): DocumentCleanerInterface
78
    {
79 1
        return new DocumentCleaner(
80 1
            $this->getClient()
81
        );
82
    }
83
84
    /**
85
     * @return \Xervice\Elasticsearch\Business\Model\Document\DocumentBuilderInterface
86
     */
87 1
    public function createDocumentBuilder(): DocumentBuilderInterface
88
    {
89 1
        return new DocumentBuilder(
90 1
            $this->getClient()
91
        );
92
    }
93
94
    /**
95
     * @return \Xervice\Elasticsearch\Business\Model\IndexerInterface
96
     */
97 1
    public function createIndexer(): IndexerInterface
98
    {
99 1
        return new Indexer(
100 1
            $this->getIndexProviderCollection(),
101 1
            $this->createIndexBuilder(),
102 1
            $this->createMappingConverter()
103
        );
104
    }
105
106
    /**
107
     * @return \Xervice\Elasticsearch\Business\Model\Index\MappingConverterInterface
108
     */
109 4
    public function createMappingConverter(): MappingConverterInterface
110
    {
111 4
        return new MappingConverter();
112
    }
113
114
    /**
115
     * @return \Xervice\Elasticsearch\Business\Model\Index\IndexBuilderInterface
116
     */
117 4
    public function createIndexBuilder(): IndexBuilderInterface
118
    {
119 4
        return new IndexBuilder(
120 4
            $this->getClient()
121
        );
122
    }
123
124
    /**
125
     * @return \Elastica\Client
126
     */
127 4
    public function getClient(): Client
128
    {
129 4
        return $this->getDependency(ElasticsearchDependencyProvider::CLIENT);
130
    }
131
132
    /**
133
     * @return \Xervice\Elasticsearch\Business\Collection\IndexCollection
134
     */
135 1
    public function getIndexProviderCollection(): IndexCollection
136
    {
137 1
        return $this->getDependency(ElasticsearchDependencyProvider::INDEX_PROVIDER);
138
    }
139
}