Code Duplication    Length = 34-35 lines in 2 locations

app/Drivers/Redis/DataManager/RedisSetDataManager.php 1 location

@@ 42-75 (lines=34) @@
39
        return $totalItems;
40
    }
41
42
    public function items(string $table, int $page, int $onPage, array $filter = []): array
43
    {
44
        $skipped = 0;
45
        $offset = ($page - 1) * $onPage;
46
        $items = [];
47
        $iterator = '';
48
        do {
49
            $pattern = null;
50
            $res = $this->connection->sscan($table, $iterator, $pattern, $onPage * 10);
51
            if (!$res) {
52
                return $items;
53
            }
54
            foreach ($res as $member) {
55
                $item = [
56
                    'member' => $member,
57
                    'length' => strlen($member),
58
                ];
59
                if (!Filter::apply($item, $filter)) {
60
                    continue;
61
                }
62
63
                if ($skipped < $offset) {
64
                    $skipped++;
65
                    continue;
66
                }
67
68
                $items[$member] = $item;
69
                if (count($items) === $onPage) {
70
                    break;
71
                }
72
            }
73
        } while ($iterator !== 0 && count($items) < $onPage);
74
        return $items;
75
    }
76
}
77

app/Drivers/Redis/DataManager/RedisSortedSetDataManager.php 1 location

@@ 43-77 (lines=35) @@
40
        return $totalItems;
41
    }
42
43
    public function items(string $table, int $page, int $onPage, array $filter = []): array
44
    {
45
        $skipped = 0;
46
        $offset = ($page - 1) * $onPage;
47
        $items = [];
48
        $iterator = '';
49
        do {
50
            $pattern = null;
51
            $res = $this->connection->zscan($table, $iterator, $pattern, $onPage * 10);
52
            if (!$res) {
53
                return $items;
54
            }
55
            foreach ($res as $member => $score) {
56
                $item = [
57
                    'member' => $member,
58
                    'length' => strlen($member),
59
                    'score' => $score,
60
                ];
61
                if (!Filter::apply($item, $filter)) {
62
                    continue;
63
                }
64
65
                if ($skipped < $offset) {
66
                    $skipped++;
67
                    continue;
68
                }
69
70
                $items[$member] = $item;
71
                if (count($items) === $onPage) {
72
                    break;
73
                }
74
            }
75
        } while ($iterator !== 0 && count($items) < $onPage);
76
        return $items;
77
    }
78
}
79