From 376ab4d6734b64e9704f41789e3c5c6329f961ca Mon Sep 17 00:00:00 2001 From: Antonio Pauletich Date: Thu, 22 Apr 2021 19:15:49 +0200 Subject: [PATCH 1/2] Add ability to specify default includes when the client did not send any --- src/Http/Controllers/Actions/FetchMany.php | 2 +- src/Http/Controllers/Actions/FetchOne.php | 2 +- src/Http/Controllers/Actions/Store.php | 2 +- src/Http/Controllers/Actions/Update.php | 2 +- src/Http/Requests/ResourceQuery.php | 7 ++++++- 5 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/Http/Controllers/Actions/FetchMany.php b/src/Http/Controllers/Actions/FetchMany.php index 7f9d0e2..b6d9efc 100644 --- a/src/Http/Controllers/Actions/FetchMany.php +++ b/src/Http/Controllers/Actions/FetchMany.php @@ -61,6 +61,6 @@ public function index(Route $route, StoreContract $store) $response = $this->searched($data, $request); } - return $response ?: new DataResponse($data); + return $response ?: (new DataResponse($data))->withRequest($request); } } diff --git a/src/Http/Controllers/Actions/FetchOne.php b/src/Http/Controllers/Actions/FetchOne.php index 6f8debc..c0ffb8d 100644 --- a/src/Http/Controllers/Actions/FetchOne.php +++ b/src/Http/Controllers/Actions/FetchOne.php @@ -61,6 +61,6 @@ public function show(Route $route, StoreContract $store) $response = $this->read($model, $request); } - return $response ?: new DataResponse($model); + return $response ?: (new DataResponse($model))->withRequest($request); } } diff --git a/src/Http/Controllers/Actions/Store.php b/src/Http/Controllers/Actions/Store.php index cd97666..aa0847c 100644 --- a/src/Http/Controllers/Actions/Store.php +++ b/src/Http/Controllers/Actions/Store.php @@ -71,6 +71,6 @@ public function store(Route $route, StoreContract $store) $response = $this->saved($model, $request, $query); } - return $response ?: new DataResponse($model); + return $response ?: (new DataResponse($model))->withRequest($query); } } diff --git a/src/Http/Controllers/Actions/Update.php b/src/Http/Controllers/Actions/Update.php index 91241dc..cf87446 100644 --- a/src/Http/Controllers/Actions/Update.php +++ b/src/Http/Controllers/Actions/Update.php @@ -73,6 +73,6 @@ public function update(Route $route, StoreContract $store) $response = $this->saved($model, $request, $query); } - return $response ?: new DataResponse($model); + return $response ?: (new DataResponse($model))->withRequest($query); } } diff --git a/src/Http/Requests/ResourceQuery.php b/src/Http/Requests/ResourceQuery.php index dde3177..86ad29c 100644 --- a/src/Http/Requests/ResourceQuery.php +++ b/src/Http/Requests/ResourceQuery.php @@ -52,6 +52,11 @@ class ResourceQuery extends FormRequest implements QueryParameters self::JSON_API_MEDIA_TYPE, ]; + /** + * @var string[]|null + */ + protected ?array $defaultIncludePaths = null; + /** * Specify the callback to use to guess the request class for querying many resources. * @@ -149,7 +154,7 @@ public function includePaths(): ?IncludePaths return IncludePaths::fromString($data['include'] ?: ''); } - return null; + return IncludePaths::nullable($this->defaultIncludePaths); } /** From edb969521bb45d2d4eaa749da53213a45df09765 Mon Sep 17 00:00:00 2001 From: Antonio Pauletich Date: Fri, 23 Apr 2021 11:09:35 +0200 Subject: [PATCH 2/2] Pass the query parameters to the response class --- composer.json | 2 +- src/Http/Controllers/Actions/FetchMany.php | 2 +- src/Http/Controllers/Actions/FetchOne.php | 2 +- src/Http/Controllers/Actions/FetchRelated.php | 4 ++-- src/Http/Controllers/Actions/FetchRelationship.php | 4 ++-- src/Http/Controllers/Actions/Store.php | 2 +- src/Http/Controllers/Actions/Update.php | 2 +- src/Http/Controllers/Actions/UpdateRelationship.php | 4 ++-- 8 files changed, 11 insertions(+), 11 deletions(-) diff --git a/composer.json b/composer.json index adf8ecd..4cbb164 100644 --- a/composer.json +++ b/composer.json @@ -25,7 +25,7 @@ "require": { "php": "^7.4|^8.0", "ext-json": "*", - "laravel-json-api/core": "^1.0.0-beta.2", + "laravel-json-api/core": "^1.0.0-beta.3", "laravel-json-api/eloquent": "^1.0.0-beta.3", "laravel-json-api/encoder-neomerx": "^1.0.0-beta.1", "laravel-json-api/exceptions": "^1.0.0-beta.2", diff --git a/src/Http/Controllers/Actions/FetchMany.php b/src/Http/Controllers/Actions/FetchMany.php index b6d9efc..9cbbffd 100644 --- a/src/Http/Controllers/Actions/FetchMany.php +++ b/src/Http/Controllers/Actions/FetchMany.php @@ -61,6 +61,6 @@ public function index(Route $route, StoreContract $store) $response = $this->searched($data, $request); } - return $response ?: (new DataResponse($data))->withRequest($request); + return $response ?: DataResponse::make($data)->withQueryParameters($request); } } diff --git a/src/Http/Controllers/Actions/FetchOne.php b/src/Http/Controllers/Actions/FetchOne.php index c0ffb8d..1851226 100644 --- a/src/Http/Controllers/Actions/FetchOne.php +++ b/src/Http/Controllers/Actions/FetchOne.php @@ -61,6 +61,6 @@ public function show(Route $route, StoreContract $store) $response = $this->read($model, $request); } - return $response ?: (new DataResponse($model))->withRequest($request); + return $response ?: DataResponse::make($model)->withQueryParameters($request); } } diff --git a/src/Http/Controllers/Actions/FetchRelated.php b/src/Http/Controllers/Actions/FetchRelated.php index 016ef9f..c8d1474 100644 --- a/src/Http/Controllers/Actions/FetchRelated.php +++ b/src/Http/Controllers/Actions/FetchRelated.php @@ -76,10 +76,10 @@ public function showRelated(Route $route, StoreContract $store) $response = $this->{$hook}($model, $data, $request); } - return $response ?: new RelatedResponse( + return $response ?: RelatedResponse::make( $model, $relation->name(), $data, - ); + )->withQueryParameters($request); } } diff --git a/src/Http/Controllers/Actions/FetchRelationship.php b/src/Http/Controllers/Actions/FetchRelationship.php index becd6f0..8f18d23 100644 --- a/src/Http/Controllers/Actions/FetchRelationship.php +++ b/src/Http/Controllers/Actions/FetchRelationship.php @@ -76,10 +76,10 @@ public function showRelationship(Route $route, StoreContract $store) $response = $this->{$hook}($model, $data, $request); } - return $response ?: new RelationshipResponse( + return $response ?: RelationshipResponse::make( $model, $relation->name(), $data - ); + )->withQueryParameters($request); } } diff --git a/src/Http/Controllers/Actions/Store.php b/src/Http/Controllers/Actions/Store.php index aa0847c..5b4b385 100644 --- a/src/Http/Controllers/Actions/Store.php +++ b/src/Http/Controllers/Actions/Store.php @@ -71,6 +71,6 @@ public function store(Route $route, StoreContract $store) $response = $this->saved($model, $request, $query); } - return $response ?: (new DataResponse($model))->withRequest($query); + return $response ?: DataResponse::make($model)->withQueryParameters($query); } } diff --git a/src/Http/Controllers/Actions/Update.php b/src/Http/Controllers/Actions/Update.php index cf87446..c0b080b 100644 --- a/src/Http/Controllers/Actions/Update.php +++ b/src/Http/Controllers/Actions/Update.php @@ -73,6 +73,6 @@ public function update(Route $route, StoreContract $store) $response = $this->saved($model, $request, $query); } - return $response ?: (new DataResponse($model))->withRequest($query); + return $response ?: DataResponse::make($model)->withQueryParameters($query); } } diff --git a/src/Http/Controllers/Actions/UpdateRelationship.php b/src/Http/Controllers/Actions/UpdateRelationship.php index 625185b..47aa47c 100644 --- a/src/Http/Controllers/Actions/UpdateRelationship.php +++ b/src/Http/Controllers/Actions/UpdateRelationship.php @@ -81,10 +81,10 @@ public function updateRelationship(Route $route, StoreContract $store) $response = $this->{$hook}($model, $result, $request, $query); } - return $response ?: new RelationshipResponse( + return $response ?: RelationshipResponse::make( $model, $fieldName, $result - ); + )->withQueryParameters($query); } }