Skip to content

Commit 20a7dcf

Browse files
committed
Add specialised base request classes for each controller action
1 parent a7164f7 commit 20a7dcf

9 files changed

+151
-24
lines changed

src/Http/Controllers/JsonApiControllerActions.php

Lines changed: 29 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -2,93 +2,98 @@
22

33
namespace Huntie\JsonApi\Http\Controllers;
44

5-
use Illuminate\Http\Request;
5+
use Huntie\JsonApi\Http\Requests\ListResourceRequest;
6+
use Huntie\JsonApi\Http\Requests\StoreResourceRequest;
7+
use Huntie\JsonApi\Http\Requests\ShowResourceRequest;
8+
use Huntie\JsonApi\Http\Requests\UpdateResourceRequest;
9+
use Huntie\JsonApi\Http\Requests\DestroyResourceRequest;
10+
use Huntie\JsonApi\Http\Requests\ShowRelationshipRequest;
611

712
/**
813
* Add default resource controller methods for JsonApiController actions.
914
*
10-
* @method indexAction(Request $request)
11-
* @method storeAction(Request $request)
12-
* @method showAction(Request $request, int $id)
13-
* @method updateAction(Request $request, int $id)
14-
* @method destroyAction(Request $request, int $id)
15-
* @method relationshipAction(Request $request, int $id, string $relation)
15+
* @method indexAction(ListResourceRequest $request)
16+
* @method storeAction(StoreResourceRequest $request)
17+
* @method showAction(ShowResourceRequest $request, int $id)
18+
* @method updateAction(UpdateResourceRequest $request, int $id)
19+
* @method destroyAction(DestroyResourceRequest $request, int $id)
20+
* @method relationshipAction(ShowRelationshipRequest $request, int $id, string $relation)
1621
*/
1722
trait JsonApiControllerActions
1823
{
1924
/**
2025
* Return a listing of the resource.
2126
*
22-
* @param Request $request
27+
* @param ListResourceRequest $request
2328
*
2429
* @return \Huntie\JsonApi\Http\JsonApiResponse
2530
*/
26-
public function index(Request $request)
31+
public function index(ListResourceRequest $request)
2732
{
2833
return $this->indexAction($request);
2934
}
3035

3136
/**
3237
* Store a new record.
3338
*
34-
* @param Request $request
39+
* @param StoreResourceRequest $request
3540
*
3641
* @return \Huntie\JsonApi\Http\JsonApiResponse
3742
*/
38-
public function store(Request $request)
43+
public function store(StoreResourceRequest $request)
3944
{
4045
return $this->storeAction($request);
4146
}
4247

4348
/**
4449
* Return a specified record.
4550
*
46-
* @param Request $request
47-
* @param int $id
51+
* @param ShowResourceRequest $request
52+
* @param int $id
4853
*
4954
* @return \Huntie\JsonApi\Http\JsonApiResponse
5055
*/
51-
public function show(Request $request, $id)
56+
public function show(ShowResourceRequest $request, $id)
5257
{
5358
return $this->showAction($request, $id);
5459
}
5560

5661
/**
5762
* Update a specified record.
5863
*
59-
* @param Request $request
60-
* @param int $id
64+
* @param UpdateResourceRequest $request
65+
* @param int $id
6166
*
6267
* @return \Huntie\JsonApi\Http\JsonApiResponse
6368
*/
64-
public function update(Request $request, $id)
69+
public function update(UpdateResourceRequest $request, $id)
6570
{
6671
return $this->updateAction($request, $id);
6772
}
6873

6974
/**
7075
* Destroy a specified record.
7176
*
72-
* @param Request $request
73-
* @param int $id
77+
* @param DestroyResourceRequest $request
78+
* @param int $id
7479
*
7580
* @return \Huntie\JsonApi\Http\JsonApiResponse
7681
*/
77-
public function destroy(Request $request, $id)
82+
public function destroy(DestroyResourceRequest $request, $id)
7883
{
7984
return $this->destroyAction($request, $id);
8085
}
8186

8287
/**
8388
* Return a specified record relationship.
8489
*
85-
* @param Request $request
86-
* @param int $id
87-
* @param string $relation
90+
* @param ShowRelationshipRequest $request
91+
* @param int $id
92+
* @param string $relation
8893
*
8994
* @return \Huntie\JsonApi\Http\JsonApiResponse
9095
*/
91-
public function relationship(Request $request, $id, $relation)
96+
public function relationship(ShowRelationshipRequest $request, $id, $relation)
9297
{
9398
return $this->relationshipAction($request, $id, $relation);
9499
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?php
2+
3+
namespace Huntie\JsonApi\Http\Requests;
4+
5+
class DestroyResourceRequest extends JsonApiRequest
6+
{
7+
/**
8+
* Base validation rules for the individual request type.
9+
*
10+
* @var array
11+
*/
12+
protected $rules = [
13+
'data.type' => 'required|string',
14+
'data.id' => 'required',
15+
];
16+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<?php
2+
3+
namespace Huntie\JsonApi\Http\Requests;
4+
5+
class ListResourceRequest extends JsonApiRequest
6+
{
7+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<?php
2+
3+
namespace Huntie\JsonApi\Http\Requests;
4+
5+
class ShowRelationshipRequest extends JsonApiRequest
6+
{
7+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?php
2+
3+
namespace Huntie\JsonApi\Http\Requests;
4+
5+
class ShowResourceRequest extends JsonApiRequest
6+
{
7+
/**
8+
* Base validation rules for the individual request type.
9+
*
10+
* @var array
11+
*/
12+
protected $rules = [
13+
'data.type' => 'required|string',
14+
'data.id' => 'required',
15+
];
16+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<?php
2+
3+
namespace Huntie\JsonApi\Http\Requests;
4+
5+
class StoreResourceRequest extends JsonApiRequest
6+
{
7+
/**
8+
* Base validation rules for the individual request type.
9+
*
10+
* @var array
11+
*/
12+
protected $rules = [
13+
'data.type' => 'required|string',
14+
'data.attributes' => 'required|array',
15+
16+
'data.relationships' => 'array',
17+
'data.relationships.*.type' => 'required_if:data.relationships|string',
18+
'data.relationships.*.id' => 'required_if:data.relationships',
19+
'data.relationships.*.attributes' => 'array',
20+
];
21+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?php
2+
3+
namespace Huntie\JsonApi\Http\Requests;
4+
5+
class UpdateResourceRequest extends JsonApiRequest
6+
{
7+
/**
8+
* Base validation rules for the individual request type.
9+
*
10+
* @var array
11+
*/
12+
protected $rules = [
13+
'data.type' => 'required|string',
14+
'data.id' => 'required',
15+
'data.attributes' => 'required|array',
16+
17+
'data.relationships' => 'array',
18+
'data.relationships.*.type' => 'required_if:data.relationships|string',
19+
'data.relationships.*.id' => 'required_if:data.relationships',
20+
'data.relationships.*.attributes' => 'array',
21+
];
22+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?php
2+
3+
namespace Huntie\JsonApi\Http\Requests;
4+
5+
class UpdateToManyRelationshipRequest extends JsonApiRequest
6+
{
7+
/**
8+
* Base validation rules for the individual request type.
9+
*
10+
* @var array
11+
*/
12+
protected $rules = [
13+
'data.*.type' => 'required',
14+
'data.*.id' => 'required',
15+
'data.*.attributes' => 'array',
16+
];
17+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?php
2+
3+
namespace Huntie\JsonApi\Http\Requests;
4+
5+
class UpdateToOneRelationshipRequest extends JsonApiRequest
6+
{
7+
/**
8+
* Base validation rules for the individual request type.
9+
*
10+
* @var array
11+
*/
12+
protected $rules = [
13+
'data.type' => 'required|string',
14+
'data.id' => 'required',
15+
];
16+
}

0 commit comments

Comments
 (0)