1
0
mirror of https://github.com/flarum/core.git synced 2025-08-04 23:47:32 +02:00

feat: improve

This commit is contained in:
Sami Mazouz
2024-02-23 15:09:47 +01:00
parent c5b61a1f87
commit cd958797f5
9 changed files with 32 additions and 24 deletions

View File

@@ -15,7 +15,7 @@ trait ExtractsListingParams
protected ?Closure $extractLimitCallback = null;
protected ?Closure $extractOffsetCallback = null;
public int $limit = 20;
public ?int $limit = null;
public int $maxLimit = 50;
public ?string $defaultSort = null;

View File

@@ -8,6 +8,7 @@ use Flarum\Api\Endpoint;
use Flarum\Api\Endpoint\Create;
use Flarum\Api\JsonApi;
use Flarum\Api\Schema;
use Flarum\Api\Sort\SortColumn;
use Flarum\Bus\Dispatcher;
use Flarum\Discussion\Command\ReadDiscussion;
use Flarum\Discussion\Discussion;
@@ -20,7 +21,6 @@ use Flarum\Post\PostRepository;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Arr;
use Tobyz\JsonApiServer\Laravel\Sort\SortColumn;
class DiscussionResource extends AbstractDatabaseResource
{

View File

@@ -4,6 +4,7 @@ namespace Flarum\Api\Resource;
use Flarum\Api\Endpoint;
use Flarum\Api\Schema;
use Flarum\Api\Sort\SortColumn;
use Flarum\Group\Event\Deleting;
use Flarum\Group\Event\Saving;
use Flarum\Group\Group;
@@ -11,7 +12,6 @@ use Flarum\Http\RequestUtil;
use Flarum\Locale\TranslatorInterface;
use Illuminate\Database\Eloquent\Builder;
use Tobyz\JsonApiServer\Context;
use Tobyz\JsonApiServer\Laravel\Sort\SortColumn;
class GroupResource extends AbstractDatabaseResource
{

View File

@@ -6,6 +6,7 @@ use Carbon\Carbon;
use Flarum\Api\Context;
use Flarum\Api\Endpoint;
use Flarum\Api\Schema;
use Flarum\Api\Sort\SortColumn;
use Flarum\Bus\Dispatcher;
use Flarum\Discussion\Command\ReadDiscussion;
use Flarum\Discussion\Discussion;
@@ -19,7 +20,6 @@ use Flarum\Post\PostRepository;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Arr;
use Tobyz\JsonApiServer\Exception\BadRequestException;
use Tobyz\JsonApiServer\Laravel\Sort\SortColumn;
class PostResource extends AbstractDatabaseResource
{

View File

@@ -5,6 +5,7 @@ namespace Flarum\Api\Resource;
use Flarum\Api\Context;
use Flarum\Api\Endpoint;
use Flarum\Api\Schema;
use Flarum\Api\Sort\SortColumn;
use Flarum\Foundation\ValidationException;
use Flarum\Http\SlugManager;
use Flarum\Locale\TranslatorInterface;
@@ -22,7 +23,6 @@ use Illuminate\Support\Arr;
use Illuminate\Support\Str;
use Intervention\Image\ImageManager;
use InvalidArgumentException;
use Tobyz\JsonApiServer\Laravel\Sort\SortColumn;
class UserResource extends AbstractDatabaseResource
{

View File

@@ -0,0 +1,10 @@
<?php
namespace Flarum\Api\Sort;
use Tobyz\JsonApiServer\Laravel\Sort\SortColumn as BaseSortColumn;
class SortColumn extends BaseSortColumn
{
//
}

View File

@@ -64,12 +64,15 @@ class ApiResource implements ExtenderInterface
/**
* Modify an endpoint.
*
* @param class-string<\Flarum\Api\Endpoint\Endpoint> $endpointClass
* @param class-string<\Flarum\Api\Endpoint\Endpoint>|array<\Flarum\Api\Endpoint\Endpoint> $endpointClass the class name of the endpoint.
* or an array of class names of the endpoints.
* @param callable|class-string $mutator a callable that accepts an endpoint and returns the modified endpoint.
*/
public function endpoint(string $endpointClass, callable|string $mutator): self
public function endpoint(string|array $endpointClass, callable|string $mutator): self
{
$this->endpoint[$endpointClass] = $mutator;
foreach ((array) $endpointClass as $endpointClassItem) {
$this->endpoint[$endpointClassItem] = $mutator;
}
return $this;
}
@@ -102,12 +105,14 @@ class ApiResource implements ExtenderInterface
/**
* Modify a field.
*
* @param string $field the name of the field.
* @param string|string[] $field the name of the field or an array of field names.
* @param callable|class-string $mutator a callable that accepts a field and returns the modified field.
*/
public function field(string $field, callable|string $mutator): self
public function field(string|array $field, callable|string $mutator): self
{
$this->field[$field] = $mutator;
foreach ((array) $field as $fieldItem) {
$this->field[$fieldItem] = $mutator;
}
return $this;
}
@@ -140,12 +145,14 @@ class ApiResource implements ExtenderInterface
/**
* Modify a sort.
*
* @param string $sort the name of the sort.
* @param string|string[] $sort the name of the sort or an array of sort names.
* @param callable|class-string $mutator a callable that accepts a sort and returns the modified sort.
*/
public function sort(string $sort, callable|string $mutator): self
public function sort(string|array $sort, callable|string $mutator): self
{
$this->sort[$sort] = $mutator;
foreach ((array) $sort as $sortItem) {
$this->sort[$sortItem] = $mutator;
}
return $this;
}

View File

@@ -9,15 +9,8 @@
namespace Flarum\Foundation;
use Flarum\Api\Endpoint\Show;
use Flarum\Api\Resource\DiscussionResource;
use Flarum\Api\Resource\UserResource;
use Flarum\Api\Schema\Relationship\ToMany;
use Flarum\Discussion\Discussion;
use Flarum\User\User;
use Illuminate\Support\Arr;
use RuntimeException;
use Tobyz\JsonApiServer\Laravel\Sort\SortColumn;
class Site
{

View File

@@ -17,8 +17,7 @@ use Flarum\Api\Resource\AbstractDatabaseResource;
use Flarum\Api\Resource\DiscussionResource;
use Flarum\Api\Resource\UserResource;
use Flarum\Api\Schema\Relationship\ToMany;
use Flarum\Api\Serializer\DiscussionSerializer;
use Flarum\Api\Serializer\UserSerializer;
use Flarum\Api\Sort\SortColumn;
use Flarum\Discussion\Discussion;
use Flarum\Extend;
use Flarum\Foundation\ValidationException;
@@ -27,7 +26,6 @@ use Flarum\Testing\integration\RetrievesAuthorizedUsers;
use Flarum\Testing\integration\TestCase;
use Flarum\User\User;
use Illuminate\Support\Arr;
use Tobyz\JsonApiServer\Laravel\Sort\SortColumn;
use Tobyz\JsonApiServer\Schema\Field\Field;
class ApiControllerTest extends TestCase