Code Duplication    Length = 29-31 lines in 2 locations

src/Plugin/Temporal.php 2 locations

@@ 26-54 (lines=29) @@
23
        $this->aggregator = new Aggregator($this);
24
    }
25
26
    public function getReference($entity, $id, $target, $date)
27
    {
28
        if (!$this->mapper->getSchema()->hasSpace('_temporal_reference_state')) {
29
            return;
30
        }
31
32
        $entity = $this->entityNameToId($entity);
33
        $target = $this->entityNameToId($target);
34
        $date = $this->getTimestamp($date);
35
36
        $rows = $this->mapper->getClient()->getSpace('_temporal_reference_state')
37
            ->select([$entity, $id, $target, $date], 0, 1, 0, 4) // [key, index, limit, offset, iterator = LE]
38
            ->getData();
39
40
        if (count($rows)) {
41
            $row = $rows[0];
42
            if ([$entity, $id, $target] == [$row[0], $row[1], $row[2]]) {
43
                $state = $this->mapper->findOne('_temporal_reference_state', [
44
                    'entity' => $entity,
45
                    'id' => $id,
46
                    'target' => $target,
47
                    'begin' => $row[3]
48
                ]);
49
                if (!$state->end || $state->end >= $date) {
50
                    return $state->targetId;
51
                }
52
            }
53
        }
54
    }
55
56
    public function getAggregator()
57
    {
@@ 107-137 (lines=31) @@
104
        return $slices;
105
    }
106
107
    public function getReferences($target, $targetId, $source, $date)
108
    {
109
        if (!$this->mapper->getSchema()->hasSpace('_temporal_reference_aggregate')) {
110
            return [];
111
        }
112
113
        $target = $this->entityNameToId($target);
114
        $source = $this->entityNameToId($source);
115
        $date = $this->getTimestamp($date);
116
117
        $rows = $this->mapper->getClient()->getSpace('_temporal_reference_aggregate')
118
            ->select([$target, $targetId, $source, $date], 0, 1, 0, 4) // [key, index, limit, offset, iterator = LE]
119
            ->getData();
120
121
        if (count($rows)) {
122
            $row = $rows[0];
123
            if ([$target, $targetId, $source] == [$row[0], $row[1], $row[2]]) {
124
                $state = $this->mapper->findOne('_temporal_reference_aggregate', [
125
                    'entity' => $target,
126
                    'id'     => $targetId,
127
                    'source' => $source,
128
                    'begin'  => $row[3]
129
                ]);
130
131
                if (!$state->end || $state->end > $date) {
132
                    return $state->data;
133
                }
134
            }
135
        }
136
        return [];
137
    }
138
139
    public function reference(array $reference)
140
    {