|
13 | 13 | use Illuminate\Database\Eloquent\Collection as EloquentCollection; |
14 | 14 | use Illuminate\Database\Eloquent\Model; |
15 | 15 | use Illuminate\Pagination\Cursor; |
16 | | -use Illuminate\Pagination\CursorPaginator as IlluminateCursorPaginator; |
17 | 16 | use Illuminate\Pagination\Paginator; |
18 | 17 | use Illuminate\Support\Collection as BaseCollection; |
19 | 18 | use Illuminate\Support\LazyCollection; |
@@ -101,15 +100,15 @@ public function cursorPaginate(Builder $builder, $perPage = null, string $cursor |
101 | 100 | { |
102 | 101 | $perPage = (int) ($perPage ?: $builder->model->getPerPage()); |
103 | 102 |
|
104 | | - $cursor = $this->resolveCursor($cursor, $cursorName); |
| 103 | + $cursor = CursorPaginator::resolveCursor($cursor, $cursorName); |
105 | 104 |
|
106 | 105 | $searchRequest = $this->searchRequestFactory->makeFromBuilder($builder, [ |
107 | 106 | 'perPage' => $perPage + 1, |
108 | 107 | 'reversed' => $cursor?->pointsToPreviousItems() ?? false, |
109 | 108 | 'searchAfter' => $cursor?->parameter(CursorPaginator::SEARCH_AFTER_PARAMETER), |
110 | 109 | ]); |
111 | 110 |
|
112 | | - if (empty($searchRequest->request()->toArray()['body']['sort'] ?? [])) { |
| 111 | + if (! $searchRequest->request()->hasSort()) { |
113 | 112 | throw new InvalidArgumentException('OpenSearch cursor pagination requires at least one explicit sort.'); |
114 | 113 | } |
115 | 114 |
|
@@ -160,22 +159,6 @@ public function getTotalCount($results): ?int |
160 | 159 | return $results->total(); |
161 | 160 | } |
162 | 161 |
|
163 | | - /** |
164 | | - * Resolve the cursor from the current request or explicit value. |
165 | | - */ |
166 | | - protected function resolveCursor(Cursor|string|null $cursor, string $cursorName): ?Cursor |
167 | | - { |
168 | | - if ($cursor instanceof Cursor) { |
169 | | - return $cursor; |
170 | | - } |
171 | | - |
172 | | - if (is_string($cursor)) { |
173 | | - return Cursor::fromEncoded($cursor); |
174 | | - } |
175 | | - |
176 | | - return IlluminateCursorPaginator::resolveCurrentCursor($cursorName); |
177 | | - } |
178 | | - |
179 | 162 | /** |
180 | 163 | * Get hit sort values keyed by document ID. |
181 | 164 | * |
|
0 commit comments