Passed
Push — main ( 07a001...488b22 )
by Tom
55s queued 15s
created

ExcludeCriteria   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 16
Duplicated Lines 0 %

Importance

Changes 2
Bugs 0 Features 1
Metric Value
eloc 7
c 2
b 0
f 1
dl 0
loc 16
rs 10
wmc 5

1 Method

Rating   Name   Duplication   Size   Complexity  
A getExcludeCriteria() 0 13 5
1
<?php
2
3
declare(strict_types=1);
4
5
namespace ApiSkeletons\Doctrine\GraphQL\Attribute;
6
7
use ApiSkeletons\Doctrine\GraphQL\Criteria\Filters;
8
use Exception;
9
10
use function array_diff;
11
use function array_intersect;
12
13
trait ExcludeCriteria
14
{
15
    /** @return string[] */
16
    public function getExcludeCriteria(): array
17
    {
18
        if ($this->includeCriteria && $this->excludeCriteria) {
19
            throw new Exception('includeCriteria and excludeCriteria are mutually exclusive.');
20
        }
21
22
        if ($this->includeCriteria) {
23
            $this->excludeCriteria = array_diff(Filters::toArray(), $this->includeCriteria);
0 ignored issues
show
Bug Best Practice introduced by
The property excludeCriteria does not exist. Although not strictly required by PHP, it is generally a best practice to declare properties explicitly.
Loading history...
24
        } elseif ($this->excludeCriteria) {
25
            $this->excludeCriteria = array_intersect(Filters::toArray(), $this->excludeCriteria);
26
        }
27
28
        return $this->excludeCriteria;
29
    }
30
}
31