| @@ 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 | ||
| @@ 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 | ||