Skip to content

Commit 51c3217

Browse files
authored
Develop (#14)
* Added Created, Updated and Deleted events, Moved request to each method to allow overloading: * Apply fixes from StyleCI * Scrutinizer updates * Update controller.stub * Feature/requests mapping (#13) * Event accepts request object and any type of request can now be pushed through * Apply fixes from StyleCI (#12) * Request should have a constructor for instances with models * Update BaseRepository.php * Apply fixes from StyleCI (#15) * Fixed namespace type declaration * Fixed namespace type declaration * Fixed namespace type declaration
1 parent e8b891e commit 51c3217

File tree

6 files changed

+83
-33
lines changed

6 files changed

+83
-33
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ By default all fields are returned, you can limit that to specific fields in the
7878

7979
## Relationships
8080

81-
* Using the relationships defined in your models, you can pass a comma delimited list eg `with=join1,join2` which will return those joins (one or many)
81+
* Using the relationships defined in your models, you can pass a comma delimited list eg `include=join1,join2` which will return those joins (one or many)
8282

8383
## Sorting
8484

src/Events/Created.php

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,24 @@ class Created
1515
*/
1616
public $record;
1717

18+
/**
19+
* the request object.
20+
*
21+
* @var \Illuminate\Http\Request|\Illuminate\Foundation\Http\FormRequest
22+
*/
23+
public $request;
24+
1825
/**
1926
* Create a new event instance.
2027
*
2128
* @param \Illuminate\Database\Eloquent\Model $record
29+
* @param \Illuminate\Http\Request|\Illuminate\Foundation\Http\FormRequest $request
30+
*
2231
* @return void
2332
*/
24-
public function __construct($record)
33+
public function __construct($record, $request)
2534
{
2635
$this->record = $record;
36+
$this->request = $request;
2737
}
2838
}

src/Events/Deleted.php

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,24 @@ class Deleted
1515
*/
1616
public $record;
1717

18+
/**
19+
* the request object.
20+
*
21+
* @var \Illuminate\Http\Request|\Illuminate\Foundation\Http\FormRequest
22+
*/
23+
public $request;
24+
1825
/**
1926
* Create a new event instance.
2027
*
2128
* @param \Illuminate\Database\Eloquent\Model $record
29+
* @param \Illuminate\Http\Request|\Illuminate\Foundation\Http\FormRequest $request
30+
*
2231
* @return void
2332
*/
24-
public function __construct($record)
33+
public function __construct($record, $request)
2534
{
2635
$this->record = $record;
36+
$this->request = $request;
2737
}
2838
}

src/Events/Updated.php

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,24 @@ class Updated
1515
*/
1616
public $record;
1717

18+
/**
19+
* the request object.
20+
*
21+
* @var \Illuminate\Http\Request|\Illuminate\Foundation\Http\FormRequest
22+
*/
23+
public $request;
24+
1825
/**
1926
* Create a new event instance.
2027
*
2128
* @param \Illuminate\Database\Eloquent\Model $record
29+
* @param \Illuminate\Http\Request|\Illuminate\Foundation\Http\FormRequest $request
30+
*
2231
* @return void
2332
*/
24-
public function __construct($record)
33+
public function __construct($record, $request)
2534
{
2635
$this->record = $record;
36+
$this->request = $request;
2737
}
2838
}

src/Generator/stubs/controller.stub

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -17,72 +17,72 @@ class {{controller.name}} extends Controller
1717
}
1818

1919

20-
/**
20+
/**
2121
* Display a listing of the resource.
2222
* GET /api/{resource}.
2323
*
24-
* @param Request $request
25-
*
24+
* @param Request $request
25+
*
2626
* @return Response
2727
*/
2828
public function index(Request $request)
29-
{
30-
return parent::index($request);
31-
}
29+
{
30+
return $this->handleIndexAction($request);
31+
}
3232

33-
/**
34-
* Store a newly created resource in storage.
35-
* POST /api/{resource}.
36-
*
37-
* @param Request $request
38-
*
39-
* @return Response
40-
*/
33+
/**
34+
* Store a newly created resource in storage.
35+
* POST /api/{resource}.
36+
*
37+
* @param Request $request
38+
*
39+
* @return Response
40+
*/
4141
public function store(Request $request)
4242
{
43-
return parent::store($request);
43+
return $this->handleStoreAction($request);
4444
}
4545

4646
/**
4747
* Display the specified resource.
4848
* GET /api/{resource}/{id}.
4949
*
5050
* @param int $id
51-
* @param Request $request
51+
* @param Request $request
5252
*
5353
* @return Response
5454
*/
5555
public function show($id, Request $request)
5656
{
57-
return parent::show($id, $request);
57+
return $this->handleShowAction($id, $request);
5858
}
5959

6060
/**
6161
* Update the specified resource in storage.
6262
* PUT /api/{resource}/{id}.
6363
*
6464
* @param int $id
65-
* @param Request $request
65+
* @param Request $request
6666
*
6767
* @return Response
6868
*/
6969
public function update($id, Request $request)
7070
{
71-
return parent::update($id, $request);
71+
return $this->handleUpdateAction($id, $request);
7272
}
7373

7474
/**
7575
* Remove the specified resource from storage.
7676
* DELETE /api/{resource}/{id}.
7777
*
7878
* @param int $id
79-
* @param Request $request
79+
* @param Request $request
8080
*
8181
* @return Response
8282
*/
8383
public function destroy($id, Request $request)
8484
{
85-
return parent::destroy($id, $request);
85+
return $this->handleDestroyAction($id, $request);
8686
}
8787

8888
}

src/Http/Controllers/Api/Controller.php

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -110,8 +110,12 @@ protected function makeRepository()
110110
*
111111
* @return Response
112112
*/
113-
public function index(Request $request)
113+
public function handleIndexAction($request)
114114
{
115+
if (! is_a($request, Request::class)) {
116+
throw new ApiException("Request should be an instance of Illuminate\Http\Request");
117+
}
118+
115119
$this->request = $request;
116120
$this->uriParser = new UriParser($this->request, config('laravel-api-controller.parameters.filter'));
117121

@@ -134,8 +138,12 @@ public function index(Request $request)
134138
*
135139
* @return Response
136140
*/
137-
public function store(Request $request)
141+
public function handleStoreAction($request)
138142
{
143+
if (! is_a($request, Request::class)) {
144+
throw new ApiException("Request should be an instance of Illuminate\Http\Request");
145+
}
146+
139147
$data = $request->all();
140148

141149
if (empty($data)) {
@@ -156,7 +164,7 @@ public function store(Request $request)
156164

157165
try {
158166
$item = $this->model->create($insert);
159-
event(new Created($item));
167+
event(new Created($item, $request));
160168
} catch (\Exception $e) {
161169
return $this->errorWrongArgs($e->getMessage());
162170
}
@@ -172,8 +180,12 @@ public function store(Request $request)
172180
*
173181
* @return Response
174182
*/
175-
public function show($id, Request $request)
183+
public function handleShowAction($id, $request)
176184
{
185+
if (! is_a($request, Request::class)) {
186+
throw new ApiException("Request should be an instance of Illuminate\Http\Request");
187+
}
188+
177189
$this->request = $request;
178190
$this->uriParser = new UriParser($this->request, config('laravel-api-controller.parameters.filter'));
179191

@@ -197,8 +209,12 @@ public function show($id, Request $request)
197209
*
198210
* @return Response
199211
*/
200-
public function update($id, Request $request)
212+
public function handleUpdateAction($id, $request)
201213
{
214+
if (! is_a($request, Request::class)) {
215+
throw new ApiException("Request should be an instance of Illuminate\Http\Request");
216+
}
217+
202218
$data = $request->all();
203219

204220
if (empty($data)) {
@@ -225,7 +241,7 @@ public function update($id, Request $request)
225241
$item->fill($fields);
226242
$item->save();
227243

228-
event(new Updated($item));
244+
event(new Updated($item, $request));
229245

230246
return $this->respondWithOne($item);
231247
}
@@ -238,12 +254,16 @@ public function update($id, Request $request)
238254
*
239255
* @return Response
240256
*/
241-
public function destroy($id, /** @scrutinizer ignore-unused */ Request $request)
257+
public function handleDestroyAction($id, $request)
242258
{
259+
if (! is_a($request, Request::class)) {
260+
throw new ApiException("Request should be an instance of Illuminate\Http\Request");
261+
}
262+
243263
try {
244264
$item = $this->repository->getById($id);
245265
$this->repository->deleteById($id);
246-
event(new Deleted($item));
266+
event(new Deleted($item, $request));
247267
} catch (ModelNotFoundException $e) {
248268
return $this->errorNotFound('Record does not exist');
249269
}

0 commit comments

Comments
 (0)