Skip to content

Commit 3e6fc42

Browse files
committed
feat: set max pagination limit to null to prevent a breaking change
1 parent efbfc1b commit 3e6fc42

File tree

5 files changed

+14
-12
lines changed

5 files changed

+14
-12
lines changed

src/Contracts/Paginator.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
interface Paginator
88
{
9-
public function __construct(int $defaultLimit, int $maxLimit);
9+
public function __construct(int $defaultLimit, ?int $maxLimit);
1010

1111
public function resolvePaginationLimit(Request $request): int;
1212
}

src/Drivers/Standard/Paginator.php

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,17 @@ class Paginator implements \Orion\Contracts\Paginator
1313
protected $defaultLimit;
1414

1515
/**
16-
* @var int $maxLimit
16+
* @var int|null $maxLimit
1717
*/
1818
protected $maxLimit;
1919

2020
/**
2121
* Paginator constructor.
2222
*
2323
* @param int $defaultLimit
24+
* @param int|null $maxLimit
2425
*/
25-
public function __construct(int $defaultLimit, int $maxLimit)
26+
public function __construct(int $defaultLimit, ?int $maxLimit)
2627
{
2728
$this->defaultLimit = $defaultLimit;
2829
$this->maxLimit = $maxLimit;
@@ -36,9 +37,10 @@ public function __construct(int $defaultLimit, int $maxLimit)
3637
*/
3738
public function resolvePaginationLimit(Request $request): int
3839
{
39-
$limit = (int)$request->get('limit');
40+
$limit = (int) $request->get('limit');
41+
4042
return tap($limit > 0 ? $limit : $this->defaultLimit, function ($limit) {
41-
if ($limit > $this->maxLimit) {
43+
if ($this->maxLimit && $limit > $this->maxLimit) {
4244
throw new MaxPaginationLimitExceededException(422, __("Pagination limit of :max is exceeded. Current: :limit", ['max' => $this->maxLimit, 'limit' => $limit]));
4345
}
4446
});

src/Http/Controllers/BaseController.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -249,11 +249,11 @@ public function limit(): int
249249
/**
250250
* Max pagination limit.
251251
*
252-
* @return int
252+
* @return int?
253253
*/
254-
public function maxLimit(): int
254+
public function maxLimit(): ?int
255255
{
256-
return 500;
256+
return null;
257257
}
258258

259259
/**

tests/Unit/Http/Controllers/BaseControllerTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public function dependencies_are_resolved_correctly()
4141
$fakeComponentsResolver = new ComponentsResolver(Post::class);
4242
$fakeParamsValidator = new ParamsValidator();
4343
$fakeRelationsResolver = new RelationsResolver([], []);
44-
$fakePaginator = new Paginator(15, 500);
44+
$fakePaginator = new Paginator(15, null);
4545
$fakeSearchBuilder = new SearchBuilder([]);
4646
$fakeQueryBuilder = new QueryBuilder(Post::class, $fakeParamsValidator, $fakeRelationsResolver, $fakeSearchBuilder);
4747

@@ -75,7 +75,7 @@ public function dependencies_are_resolved_correctly()
7575
\Orion\Contracts\Paginator::class,
7676
[
7777
'defaultLimit' => 15,
78-
'maxLimit' => 500,
78+
'maxLimit' => null,
7979
]
8080
)->once()->andReturn($fakePaginator);
8181

tests/Unit/Http/Controllers/RelationControllerTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public function dependencies_are_resolved_correctly()
3434
$fakeComponentsResolver = new ComponentsResolver(Post::class);
3535
$fakeParamsValidator = new ParamsValidator();
3636
$fakeRelationsResolver = new RelationsResolver([], []);
37-
$fakePaginator = new Paginator(15, 500);
37+
$fakePaginator = new Paginator(15, null);
3838
$fakeSearchBuilder = new SearchBuilder([]);
3939
$fakeQueryBuilder = new QueryBuilder(Post::class, $fakeParamsValidator, $fakeRelationsResolver, $fakeSearchBuilder);
4040
$fakeRelationQueryBuilder = new QueryBuilder(User::class, $fakeParamsValidator, $fakeRelationsResolver, $fakeSearchBuilder);
@@ -69,7 +69,7 @@ public function dependencies_are_resolved_correctly()
6969
\Orion\Contracts\Paginator::class,
7070
[
7171
'defaultLimit' => 15,
72-
'maxLimit' => 500,
72+
'maxLimit' => null,
7373
]
7474
)->once()->andReturn($fakePaginator);
7575

0 commit comments

Comments
 (0)