Passed
Push — main ( a33de3...4370d9 )
by Artem
02:12
created

ContentSearchResult::setResults()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 2
nc 1
nop 1
dl 0
loc 4
rs 10
c 1
b 0
f 0
1
<?php
2
declare(strict_types=1);
3
4
namespace CloudPlayDev\ConfluenceClient\Entity;
5
6
7
use CloudPlayDev\ConfluenceClient\Exception\HydrationException;
8
use Webmozart\Assert\Assert;
9
use function count;
10
11
class ContentSearchResult implements Hydratable
12
{
13
14
    private int $size = 0;
15
16
    /**
17
     * @var AbstractContent[]
18
     */
19
    private array $results = [];
20
21
    /**
22
     * @param mixed[] $data
23
     * @return ContentSearchResult
24
     * @throws HydrationException
25
     */
26
    public static function load(array $data): self
27
    {
28
29
        $searchResult = new self;
30
31
        Assert::true(isset($data['results'], $data['size']));
32
        Assert::isArray($data['results']);
33
        Assert::integer($data['size']);
34
35
        $searchResult->setSize($data['size']);
36
37
        if ($data['size'] >= 1 && count($data['results']) >= 1) {
38
39
            foreach ($data['results'] as $resultEntity) {
40
                Assert::isArray($resultEntity);
41
                $content = AbstractContent::load($resultEntity);
42
                $searchResult->addResult($content);
43
            }
44
        }
45
46
        return $searchResult;
47
    }
48
49
    /**
50
     * @param AbstractContent[] $results
51
     * @return ContentSearchResult
52
     */
53
    public function setResults(array $results): ContentSearchResult
54
    {
55
        $this->results = $results;
56
        return $this;
57
    }
58
59
    /**
60
     * @param int $size
61
     * @return ContentSearchResult
62
     */
63
    public function setSize(int $size): ContentSearchResult
64
    {
65
        $this->size = $size;
66
        return $this;
67
    }
68
69
    /**
70
     * @return int
71
     */
72
    public function getSize(): int
73
    {
74
        return $this->size;
75
    }
76
77
    /**
78
     * @return AbstractContent[]
79
     */
80
    public function getResults(): array
81
    {
82
        return $this->results;
83
    }
84
85
    public function getResultAt(int $position): ?AbstractContent
86
    {
87
        return $this->results[$position] ?? null;
88
    }
89
90
    /**
91
     * @return self
92
     */
93
    public function addResult(AbstractContent $content): self
94
    {
95
        $this->results[] = $content;
96
        return $this;
97
98
    }
99
100
101
}
102