Skip to content
This repository was archived by the owner on Apr 29, 2024. It is now read-only.

Commit d6fcfe6

Browse files
authored
Merge pull request #18 from fuzz-productions/feature-improve-query-modifiers-api
Feature improve query modifiers api
2 parents ad402b7 + 920fc72 commit d6fcfe6

File tree

3 files changed

+247
-250
lines changed

3 files changed

+247
-250
lines changed

src/Contracts/Repository.php

+71-60
Original file line numberDiff line numberDiff line change
@@ -2,40 +2,42 @@
22

33
namespace Fuzz\MagicBox\Contracts;
44

5-
use Fuzz\MagicBox\EloquentRepository;
5+
use Closure;
6+
use Illuminate\Database\Eloquent\Collection;
67
use Illuminate\Database\Eloquent\Model;
8+
use Illuminate\Contracts\Pagination\Paginator;
79

810
interface Repository
911
{
1012
/**
1113
* Set the model for an instance of this resource controller.
1214
*
1315
* @param string $model_class
14-
* @return static
16+
* @return \Fuzz\MagicBox\Contracts\Repository
1517
*/
16-
public function setModelClass($model_class);
18+
public function setModelClass($model_class): Repository;
1719

1820
/**
1921
* Get the model class.
2022
*
2123
* @return string
2224
*/
23-
public function getModelClass();
25+
public function getModelClass(): string;
2426

2527
/**
2628
* Set input manually.
2729
*
2830
* @param array $input
29-
* @return static
31+
* @return \Fuzz\MagicBox\Contracts\Repository
3032
*/
31-
public function setInput(array $input);
33+
public function setInput(array $input): Repository;
3234

3335
/**
3436
* Get input.
3537
*
3638
* @return array
3739
*/
38-
public function getInput();
40+
public function getInput(): array;
3941

4042
/**
4143
* Get the PK name
@@ -55,60 +57,69 @@ public function exists(): bool;
5557
* Set eager load manually.
5658
*
5759
* @param array $eager_loads
58-
* @return static
60+
* @return \Fuzz\MagicBox\Contracts\Repository
5961
*/
60-
public function setEagerLoads(array $eager_loads);
62+
public function setEagerLoads(array $eager_loads): Repository;
6163

6264
/**
6365
* Get eager loads.
6466
*
6567
* @return array
6668
*/
67-
public function getEagerLoads();
69+
public function getEagerLoads(): array;
6870

6971
/**
7072
* Set filters manually.
7173
*
7274
* @param array $filters
73-
* @return static
75+
* @return \Fuzz\MagicBox\Contracts\Repository
7476
*/
75-
public function setFilters(array $filters);
77+
public function setFilters(array $filters): Repository;
7678

7779
/**
7880
* Get filters.
7981
*
8082
* @return array
8183
*/
82-
public function getFilters();
84+
public function getFilters(): array;
85+
86+
/**
87+
* Add a single modifier
88+
*
89+
* @param \Closure $modifier
90+
*
91+
* @return \Fuzz\MagicBox\Contracts\Repository
92+
*/
93+
public function addModifier(Closure $modifier): Repository;
8394

8495
/**
8596
* Set modifiers.
8697
*
8798
* @param array $modifiers
88-
* @return static
99+
* @return \Fuzz\MagicBox\Contracts\Repository
89100
*/
90-
public function setModifiers(array $modifiers);
101+
public function setModifiers(array $modifiers): Repository;
91102

92103
/**
93104
* Get modifiers.
94105
*
95106
* @return array
96107
*/
97-
public function getModifiers();
108+
public function getModifiers(): array;
98109

99110
/**
100111
* Return a model's fields.
101112
*
102113
* @param \Illuminate\Database\Eloquent\Model $instance
103114
* @return array
104115
*/
105-
public static function getFields(Model $instance);
116+
public static function getFields(Model $instance): array;
106117

107118
/**
108119
* Find an instance of a model by ID.
109120
*
110121
* @param int $id
111-
* @return \Illuminate\Database\Eloquent\Model
122+
* @return \Illuminate\Database\Eloquent\Model|null
112123
*/
113124
public function find($id);
114125

@@ -118,43 +129,43 @@ public function find($id);
118129
* @param int $id
119130
* @return \Illuminate\Database\Eloquent\Model
120131
*/
121-
public function findOrFail($id);
132+
public function findOrFail($id): Model;
122133

123134
/**
124135
* Get all elements against the base query.
125136
*
126137
* @return \Illuminate\Database\Eloquent\Collection
127138
*/
128-
public function all();
139+
public function all(): Collection;
129140

130141
/**
131142
* Return paginated response.
132143
*
133144
* @param int $per_page
134-
* @return \Illuminate\Pagination\Paginator
145+
* @return \Illuminate\Contracts\Pagination\Paginator
135146
*/
136-
public function paginate($per_page);
147+
public function paginate($per_page): Paginator;
137148

138149
/**
139150
* Count all elements against the base query.
140151
*
141152
* @return int
142153
*/
143-
public function count();
154+
public function count(): int;
144155

145156
/**
146157
* Determine if the base query returns a nonzero count.
147158
*
148159
* @return bool
149160
*/
150-
public function hasAny();
161+
public function hasAny(): bool;
151162

152163
/**
153164
* Get a random value.
154165
*
155166
* @return \Illuminate\Database\Eloquent\Model
156167
*/
157-
public function random();
168+
public function random(): Model;
158169

159170
/**
160171
* Get the primary key from input.
@@ -168,44 +179,44 @@ public function getInputId();
168179
*
169180
* @return \Illuminate\Database\Eloquent\Model
170181
*/
171-
public function create();
182+
public function create(): Model;
172183

173184
/**
174185
* Read a model.
175186
*
176187
* @return \Illuminate\Database\Eloquent\Model
177188
*/
178-
public function read();
189+
public function read(): Model;
179190

180191
/**
181192
* Update a model.
182193
*
183194
* @return \Illuminate\Database\Eloquent\Model
184195
*/
185-
public function update();
196+
public function update(): Model;
186197

187198
/**
188199
* Update a model.
189200
*
190201
* @return boolean
191202
*/
192-
public function delete();
203+
public function delete(): bool;
193204

194205
/**
195206
* Save a model, regardless of whether or not it is "new".
196207
*
197208
* @return \Illuminate\Database\Eloquent\Model
198209
*/
199-
public function save();
210+
public function save(): Model;
200211

201212
/**
202213
* Set the fillable array
203214
*
204215
* @param array $fillable
205216
*
206-
* @return \Fuzz\MagicBox\EloquentRepository
217+
* @return \Fuzz\MagicBox\Contracts\Repository
207218
*/
208-
public function setFillable(array $fillable): EloquentRepository;
219+
public function setFillable(array $fillable): Repository;
209220

210221
/**
211222
* Get the fillable attributes
@@ -221,36 +232,36 @@ public function getFillable(bool $assoc = false): array;
221232
*
222233
* @param string $fillable
223234
*
224-
* @return \Fuzz\MagicBox\EloquentRepository
235+
* @return \Fuzz\MagicBox\Contracts\Repository
225236
*/
226-
public function addFillable(string $fillable): EloquentRepository;
237+
public function addFillable(string $fillable): Repository;
227238

228239
/**
229240
* Add many fillable fields
230241
*
231242
* @param array $fillable
232243
*
233-
* @return \Fuzz\MagicBox\EloquentRepository
244+
* @return \Fuzz\MagicBox\Contracts\Repository
234245
*/
235-
public function addManyFillable(array $fillable): EloquentRepository;
246+
public function addManyFillable(array $fillable): Repository;
236247

237248
/**
238249
* Remove a fillable attribute
239250
*
240251
* @param string $fillable
241252
*
242-
* @return \Fuzz\MagicBox\EloquentRepository
253+
* @return \Fuzz\MagicBox\Contracts\Repository
243254
*/
244-
public function removeFillable(string $fillable): EloquentRepository;
255+
public function removeFillable(string $fillable): Repository;
245256

246257
/**
247258
* Remove many fillable fields
248259
*
249260
* @param array $fillable
250261
*
251-
* @return \Fuzz\MagicBox\EloquentRepository
262+
* @return \Fuzz\MagicBox\Contracts\Repository
252263
*/
253-
public function removeManyFillable(array $fillable): EloquentRepository;
264+
public function removeManyFillable(array $fillable): Repository;
254265

255266
/**
256267
* Determine whether a given key is fillable
@@ -266,9 +277,9 @@ public function isFillable(string $key): bool;
266277
*
267278
* @param array $includable
268279
*
269-
* @return \Fuzz\MagicBox\EloquentRepository
280+
* @return \Fuzz\MagicBox\Contracts\Repository
270281
*/
271-
public function setIncludable(array $includable): EloquentRepository;
282+
public function setIncludable(array $includable): Repository;
272283

273284
/**
274285
* Get the includable relationships
@@ -284,36 +295,36 @@ public function getIncludable(bool $assoc = false): array;
284295
*
285296
* @param string $includable
286297
*
287-
* @return \Fuzz\MagicBox\EloquentRepository
298+
* @return \Fuzz\MagicBox\Contracts\Repository
288299
*/
289-
public function addIncludable(string $includable): EloquentRepository;
300+
public function addIncludable(string $includable): Repository;
290301

291302
/**
292303
* Add many includable fields
293304
*
294305
* @param array $includable
295306
*
296-
* @return \Fuzz\MagicBox\EloquentRepository
307+
* @return \Fuzz\MagicBox\Contracts\Repository
297308
*/
298-
public function addManyIncludable(array $includable): EloquentRepository;
309+
public function addManyIncludable(array $includable): Repository;
299310

300311
/**
301312
* Remove an includable relationship
302313
*
303314
* @param string $includable
304315
*
305-
* @return \Fuzz\MagicBox\EloquentRepository
316+
* @return \Fuzz\MagicBox\Contracts\Repository
306317
*/
307-
public function removeIncludable(string $includable): EloquentRepository;
318+
public function removeIncludable(string $includable): Repository;
308319

309320
/**
310321
* Remove many includable relationships
311322
*
312323
* @param array $includable
313324
*
314-
* @return \Fuzz\MagicBox\EloquentRepository
325+
* @return \Fuzz\MagicBox\Contracts\Repository
315326
*/
316-
public function removeManyIncludable(array $includable): EloquentRepository;
327+
public function removeManyIncludable(array $includable): Repository;
317328

318329
/**
319330
* Determine whether a given key is includable
@@ -329,9 +340,9 @@ public function isIncludable(string $key): bool;
329340
*
330341
* @param array $filterable
331342
*
332-
* @return \Fuzz\MagicBox\EloquentRepository
343+
* @return \Fuzz\MagicBox\Contracts\Repository
333344
*/
334-
public function setFilterable(array $filterable): EloquentRepository;
345+
public function setFilterable(array $filterable): Repository;
335346

336347
/**
337348
* Get the filterable fields
@@ -347,36 +358,36 @@ public function getFilterable(bool $assoc = false): array;
347358
*
348359
* @param string $filterable
349360
*
350-
* @return \Fuzz\MagicBox\EloquentRepository
361+
* @return \Fuzz\MagicBox\Contracts\Repository
351362
*/
352-
public function addFilterable(string $filterable): EloquentRepository;
363+
public function addFilterable(string $filterable): Repository;
353364

354365
/**
355366
* Add many filterable fields
356367
*
357368
* @param array $filterable
358369
*
359-
* @return \Fuzz\MagicBox\EloquentRepository
370+
* @return \Fuzz\MagicBox\Contracts\Repository
360371
*/
361-
public function addManyFilterable(array $filterable): EloquentRepository;
372+
public function addManyFilterable(array $filterable): Repository;
362373

363374
/**
364375
* Remove a filterable field
365376
*
366377
* @param string $filterable
367378
*
368-
* @return \Fuzz\MagicBox\EloquentRepository
379+
* @return \Fuzz\MagicBox\Contracts\Repository
369380
*/
370-
public function removeFilterable(string $filterable): EloquentRepository;
381+
public function removeFilterable(string $filterable): Repository;
371382

372383
/**
373384
* Remove many filterable fields
374385
*
375386
* @param array $filterable
376387
*
377-
* @return \Fuzz\MagicBox\EloquentRepository
388+
* @return \Fuzz\MagicBox\Contracts\Repository
378389
*/
379-
public function removeManyFilterable(array $filterable): EloquentRepository;
390+
public function removeManyFilterable(array $filterable): Repository;
380391

381392
/**
382393
* Determine whether a given key is filterable

0 commit comments

Comments
 (0)