CreateWriteIndex::__construct()   A
last analyzed

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 1
Bugs 0 Features 0
Metric Value
eloc 2
c 1
b 0
f 0
dl 0
loc 4
ccs 3
cts 3
cp 1
rs 10
cc 1
nc 1
nop 2
crap 1
1
<?php
2
3
namespace Matchish\ScoutElasticSearch\Jobs\Stages;
4
5
use Elasticsearch\Client;
6
use Matchish\ScoutElasticSearch\ElasticSearch\DefaultAlias;
7
use Matchish\ScoutElasticSearch\ElasticSearch\Index;
8
use Matchish\ScoutElasticSearch\ElasticSearch\Params\Indices\Create;
9
use Matchish\ScoutElasticSearch\ElasticSearch\WriteAlias;
10
use Matchish\ScoutElasticSearch\Searchable\ImportSource;
11
12
/**
13
 * @internal
14
 */
15
final class CreateWriteIndex
16
{
17
    /**
18
     * @var ImportSource
19
     */
20
    private $source;
21
    /**
22
     * @var Index
23
     */
24
    private $index;
25
26
    /**
27
     * @param ImportSource $source
28
     * @param Index $index
29
     */
30 16
    public function __construct(ImportSource $source, Index $index)
31
    {
32 16
        $this->source = $source;
33 16
        $this->index = $index;
34 16
    }
35
36 14
    public function handle(Client $elasticsearch): void
37
    {
38 14
        $source = $this->source;
39 14
        $this->index->addAlias(new WriteAlias(new DefaultAlias($source->searchableAs())));
40
41 14
        $params = new Create(
42 14
            $this->index->name(),
43 14
            $this->index->config()
44
        );
45
46 14
        $elasticsearch->indices()->create($params->toArray());
47 14
    }
48
49 13
    public function title(): string
50
    {
51 13
        return 'Create write index';
52
    }
53
54 13
    public function estimate(): int
55
    {
56 13
        return 1;
57
    }
58
}
59