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

InconsistencySeeker   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 40
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 5
lcom 1
cbo 3
dl 0
loc 40
ccs 20
cts 20
cp 1
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 5 1
A seekForInconsistencies() 0 28 4
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