Completed
Push — master ( 602037...2f570f )
by Marius
06:48 queued 03:50
created

InconsistencySeeker::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 5
ccs 4
cts 4
cp 1
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 2
crap 1
1
<?php
2
declare(strict_types=1);
3
4
namespace Maba\DatabaseInconsistencyFinder\Service;
5
6
use Maba\DatabaseInconsistencyFinder\Database\QueryExecutor;
7
use Maba\DatabaseInconsistencyFinder\Entity\InconsistenciesResult;
8
use Maba\DatabaseInconsistencyFinder\Entity\Interval;
9
use Maba\DatabaseInconsistencyFinder\Entity\ReferencesConfiguration;
10
11
class InconsistencySeeker
12
{
13
    private $referencesConfiguration;
14
    private $queryExecutor;
15
16 8
    public function __construct(ReferencesConfiguration $referencesConfiguration, QueryExecutor $queryExecutor)
17
    {
18 8
        $this->referencesConfiguration = $referencesConfiguration;
19 8
        $this->queryExecutor = $queryExecutor;
20 8
    }
21
22 7
    public function seekForInconsistencies(Interval $interval): InconsistenciesResult
23
    {
24 7
        $result = new InconsistenciesResult();
25
26 7
        $expected = $this->queryExecutor->findAllReferencedByInterval(
27 7
            $this->referencesConfiguration->getReferencedColumn(),
28 7
            $interval
29
        );
30
31 7
        $actual = $this->queryExecutor->aggregateReferencesByInterval(
32 7
            $this->referencesConfiguration->getTableReferencesList(),
33 7
            $interval
34
        );
35
36 7
        foreach ($expected as $id => $number) {
37 7
            if (!isset($actual[$id])) {
38 2
                $result->addOrphanedRecordId($id);
39 7
            } elseif ($actual[$id] !== $expected[$id]) {
40 2
                $result->addInvalidReferenceCount($id, $actual[$id]);
41
            }
42
43 7
            unset($actual[$id]);
44
        }
45
46 7
        $result->setMissingReferenceCounts($actual);
47
48 7
        return $result;
49
    }
50
}
51