1
0
mirror of https://github.com/flarum/core.git synced 2025-08-05 07:57:46 +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 $extractLimitCallback = null;
protected ?Closure $extractOffsetCallback = null; protected ?Closure $extractOffsetCallback = null;
public int $limit = 20; public ?int $limit = null;
public int $maxLimit = 50; public int $maxLimit = 50;
public ?string $defaultSort = null; public ?string $defaultSort = null;

View File

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

View File

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

View File

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

View File

@@ -5,6 +5,7 @@ namespace Flarum\Api\Resource;
use Flarum\Api\Context; use Flarum\Api\Context;
use Flarum\Api\Endpoint; use Flarum\Api\Endpoint;
use Flarum\Api\Schema; use Flarum\Api\Schema;
use Flarum\Api\Sort\SortColumn;
use Flarum\Foundation\ValidationException; use Flarum\Foundation\ValidationException;
use Flarum\Http\SlugManager; use Flarum\Http\SlugManager;
use Flarum\Locale\TranslatorInterface; use Flarum\Locale\TranslatorInterface;
@@ -22,7 +23,6 @@ use Illuminate\Support\Arr;
use Illuminate\Support\Str; use Illuminate\Support\Str;
use Intervention\Image\ImageManager; use Intervention\Image\ImageManager;
use InvalidArgumentException; use InvalidArgumentException;
use Tobyz\JsonApiServer\Laravel\Sort\SortColumn;
class UserResource extends AbstractDatabaseResource 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. * 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. * @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; return $this;
} }
@@ -102,12 +105,14 @@ class ApiResource implements ExtenderInterface
/** /**
* Modify a field. * 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. * @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; return $this;
} }
@@ -140,12 +145,14 @@ class ApiResource implements ExtenderInterface
/** /**
* Modify a sort. * 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. * @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; return $this;
} }

View File

@@ -9,15 +9,8 @@
namespace Flarum\Foundation; 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 Illuminate\Support\Arr;
use RuntimeException; use RuntimeException;
use Tobyz\JsonApiServer\Laravel\Sort\SortColumn;
class Site class Site
{ {

View File

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