Passed
Push — next ( a64239...381d12 )
by Bas
06:24 queued 02:50
created

HandlesAnalyzers   A

Complexity

Total Complexity 9

Size/Duplication

Total Lines 89
Duplicated Lines 0 %

Test Coverage

Coverage 93.75%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 22
dl 0
loc 89
ccs 30
cts 32
cp 0.9375
rs 10
c 1
b 0
f 0
wmc 9

8 Methods

Rating   Name   Duplication   Size   Complexity  
A hasAnalyzer() 0 4 1
A dropAnalyzer() 0 3 1
A getAnalyzer() 0 3 1
A getAllAnalyzers() 0 3 1
A dropAnalyzerIfExists() 0 7 2
A createAnalyzer() 0 10 1
A replaceAnalyzer() 0 10 1
A dropAllAnalyzers() 0 3 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace LaravelFreelancerNL\Aranguent\Schema\Concerns;
6
7
use ArangoClient\Exceptions\ArangoException;
8
9
trait HandlesAnalyzers
10
{
11
    /**
12
     * @param  array<mixed>  $properties
13
     * @param  array<string>  $features
14
     *
15
     * @throws ArangoException
16
     */
17 13
    public function createAnalyzer(string $name, string $type, array $properties = null, array $features = null)
18
    {
19 13
        $analyzer = array_filter([
20 13
            'name' => $name,
21 13
            'type' => $type,
22 13
            'properties' => $properties,
23 13
            'features' => $features,
24 13
        ]);
25
26 13
        $this->schemaManager->createAnalyzer($analyzer);
27
    }
28
29
    /**
30
     * @param  array<mixed>  $properties
31
     * @param  array<string>  $features
32
     *
33
     * @throws ArangoException
34
     */
35 2
    public function replaceAnalyzer(string $name, string $type, array $properties = null, array $features = null)
36
    {
37 2
        $analyzer = array_filter([
38 2
            'name' => $name,
39 2
            'type' => $type,
40 2
            'properties' => $properties,
41 2
            'features' => $features,
42 2
        ]);
43
44 2
        $this->schemaManager->replaceAnalyzer($name, $analyzer);
45
    }
46
47
    /**
48
     * @throws ArangoException
49
     */
50
    public function getAnalyzer(string $name): \stdClass
51
    {
52
        return $this->schemaManager->getAnalyzer($name);
53
    }
54
55 4
    public function hasAnalyzer(string $analyzer): bool
56
    {
57 4
        return $this->handleExceptionsAsQueryExceptions(function () use ($analyzer) {
0 ignored issues
show
Bug introduced by
It seems like handleExceptionsAsQueryExceptions() must be provided by classes using this trait. How about adding it as abstract method to this trait? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

57
        return $this->/** @scrutinizer ignore-call */ handleExceptionsAsQueryExceptions(function () use ($analyzer) {
Loading history...
58 4
            return $this->schemaManager->hasAnalyzer($analyzer);
59 4
        });
60
    }
61
62
    /**
63
     * @throws ArangoException
64
     */
65 3
    public function getAllAnalyzers(): array
66
    {
67 3
        return $this->schemaManager->getAnalyzers();
68
    }
69
70
    /**
71
     * @throws ArangoException
72
     */
73 2
    public function dropAnalyzer(string $name)
74
    {
75 2
        $this->schemaManager->deleteAnalyzer($name);
76
    }
77
78
    /**
79
     * @throws ArangoException
80
     */
81 4
    public function dropAnalyzerIfExists(string $name): bool
82
    {
83 4
        if ($this->hasAnalyzer($name)) {
84 2
            $this->schemaManager->deleteAnalyzer($name);
85
        }
86
87 4
        return true;
88
    }
89
90
    /**
91
     * Drop all custom analyzers from the schema.
92
     *
93
     * @throws ArangoException
94
     */
95 35
    public function dropAllAnalyzers(): void
96
    {
97 35
        $this->schemaManager->deleteAllAnalyzers();
98
    }
99
}
100