Skip to content

Commit

Permalink
Change the method signature
Browse files Browse the repository at this point in the history
* Repository related supports now a custom casts.

* Apply fixes from StyleCI (#303)

* docs

* Use restify request.

* Apply fixes from StyleCI (#305)

* test
  • Loading branch information
binaryk authored Dec 12, 2020
1 parent 053fbfc commit 794ee15
Show file tree
Hide file tree
Showing 5 changed files with 19 additions and 16 deletions.
2 changes: 1 addition & 1 deletion src/Http/Controllers/ProfileController.php
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ public function __invoke(RestifyRequest $request)
$user->{ProfileAvatarRequest::$userAvatarAttribute} = url($user->{ProfileAvatarRequest::$userAvatarAttribute});
}

if ($related = $request->get('related')) {
if ($related = $request->input('related')) {
$user->load(explode(',', $related));
}

Expand Down
11 changes: 6 additions & 5 deletions src/Repositories/Casts/RelatedCast.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,21 @@
namespace Binaryk\LaravelRestify\Repositories\Casts;

use Binaryk\LaravelRestify\Contracts\RestifySearchable;
use Binaryk\LaravelRestify\Http\Requests\RestifyRequest;
use Binaryk\LaravelRestify\Repositories\Repository;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Relations\Relation;
use Illuminate\Http\Request;
use Illuminate\Support\Collection;

class RelatedCast extends RepositoryCast
{
public static function fromBuilder(Request $request, Builder $builder): Collection
public static function fromBuilder(RestifyRequest $request, Builder $builder, Repository $repository): Collection
{
return $builder->take($request->input('relatablePerPage') ?? (static::$defaultRelatablePerPage ?? RestifySearchable::DEFAULT_RELATABLE_PER_PAGE))->get();
return $builder->take($request->input('relatablePerPage') ?? ($repository::$defaultRelatablePerPage ?? RestifySearchable::DEFAULT_RELATABLE_PER_PAGE))->get();
}

public static function fromRelation(Request $request, Relation $relation): Collection
public static function fromRelation(RestifyRequest $request, Relation $relation, Repository $repository): Collection
{
return $relation->take($request->input('relatablePerPage') ?? (static::$defaultRelatablePerPage ?? RestifySearchable::DEFAULT_RELATABLE_PER_PAGE))->get();
return $relation->take($request->input('relatablePerPage') ?? ($repository::$defaultRelatablePerPage ?? RestifySearchable::DEFAULT_RELATABLE_PER_PAGE))->get();
}
}
7 changes: 4 additions & 3 deletions src/Repositories/Casts/RepositoryCast.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,15 @@

namespace Binaryk\LaravelRestify\Repositories\Casts;

use Binaryk\LaravelRestify\Http\Requests\RestifyRequest;
use Binaryk\LaravelRestify\Repositories\Repository;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Relations\Relation;
use Illuminate\Http\Request;
use Illuminate\Support\Collection;

abstract class RepositoryCast
{
abstract public static function fromBuilder(Request $request, Builder $builder): Collection;
abstract public static function fromBuilder(RestifyRequest $request, Builder $builder, Repository $repository): Collection;

abstract public static function fromRelation(Request $request, Relation $relation): Collection;
abstract public static function fromRelation(RestifyRequest $request, Relation $relation, Repository $repository): Collection;
}
4 changes: 2 additions & 2 deletions src/Repositories/Repository.php
Original file line number Diff line number Diff line change
Expand Up @@ -533,9 +533,9 @@ public function resolveRelationships($request): array
: $this->resource->{$relation}();

collect([
Builder::class => fn () => $withs->put($relation, (static::$relatedCast)::fromBuilder($request, $paginator)),
Builder::class => fn () => $withs->put($relation, (static::$relatedCast)::fromBuilder($request, $paginator, $this)),

Relation::class => fn () => $withs->put($relation, (static::$relatedCast)::fromRelation($request, $paginator)),
Relation::class => fn () => $withs->put($relation, (static::$relatedCast)::fromRelation($request, $paginator, $this)),

Collection::class => fn () => $withs->put($relation, $paginator),

Expand Down
11 changes: 6 additions & 5 deletions tests/Fixtures/Post/RelatedCastWithAttributes.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,24 +3,25 @@
namespace Binaryk\LaravelRestify\Tests\Fixtures\Post;

use Binaryk\LaravelRestify\Contracts\RestifySearchable;
use Binaryk\LaravelRestify\Http\Requests\RestifyRequest;
use Binaryk\LaravelRestify\Repositories\Casts\RepositoryCast;
use Binaryk\LaravelRestify\Repositories\Repository;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Relations\Relation;
use Illuminate\Http\Request;
use Illuminate\Support\Collection;

class RelatedCastWithAttributes extends RepositoryCast
{
public static function fromBuilder(Request $request, Builder $builder): Collection
public static function fromBuilder(RestifyRequest $request, Builder $builder, Repository $repository): Collection
{
return $builder->take($request->input('relatablePerPage') ?? (static::$defaultRelatablePerPage ?? RestifySearchable::DEFAULT_RELATABLE_PER_PAGE))
return $builder->take($request->input('relatablePerPage') ?? ($repository::$defaultRelatablePerPage ?? RestifySearchable::DEFAULT_RELATABLE_PER_PAGE))
->get()
->map(fn ($item) => ['attributes' => $item->toArray()]);
}

public static function fromRelation(Request $request, Relation $relation): Collection
public static function fromRelation(RestifyRequest $request, Relation $relation, Repository $repository): Collection
{
return $relation->take($request->input('relatablePerPage') ?? (static::$defaultRelatablePerPage ?? RestifySearchable::DEFAULT_RELATABLE_PER_PAGE))
return $relation->take($request->input('relatablePerPage') ?? ($repository::$defaultRelatablePerPage ?? RestifySearchable::DEFAULT_RELATABLE_PER_PAGE))
->get()
->map(fn ($item) => ['attributes' => $item->toArray()]);
}
Expand Down

0 comments on commit 794ee15

Please sign in to comment.