mirror of
https://github.com/flarum/core.git
synced 2025-08-05 07:57:46 +02:00
feat: improve
This commit is contained in:
@@ -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;
|
||||||
|
|
||||||
|
@@ -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
|
||||||
{
|
{
|
||||||
|
@@ -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
|
||||||
{
|
{
|
||||||
|
@@ -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
|
||||||
{
|
{
|
||||||
|
@@ -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
|
||||||
{
|
{
|
||||||
|
10
framework/core/src/Api/Sort/SortColumn.php
Normal file
10
framework/core/src/Api/Sort/SortColumn.php
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Flarum\Api\Sort;
|
||||||
|
|
||||||
|
use Tobyz\JsonApiServer\Laravel\Sort\SortColumn as BaseSortColumn;
|
||||||
|
|
||||||
|
class SortColumn extends BaseSortColumn
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
@@ -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;
|
||||||
}
|
}
|
||||||
|
@@ -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
|
||||||
{
|
{
|
||||||
|
@@ -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
|
||||||
|
Reference in New Issue
Block a user