33namespace Torann \LaravelRepository \Contracts ;
44
55use Illuminate \Support \Collection ;
6- use Illuminate \Pagination \Paginator ;
76use Illuminate \Database \Eloquent \Model ;
87
8+ /**
9+ * @template TKey of array-key
10+ * @template TValue
11+ *
12+ * @implements \ArrayAccess<TKey, TValue>
13+ */
914interface RepositoryContract
1015{
1116 /**
1217 * Return model instance.
1318 *
1419 * @return Model
1520 */
16- public function getModel ();
21+ public function getModel (): Model ;
1722
1823 /**
1924 * Find data by id
@@ -23,29 +28,29 @@ public function getModel();
2328 *
2429 * @return Model|Collection
2530 */
26- public function find ($ id , $ columns = ['* ' ]);
31+ public function find (mixed $ id , array $ columns = ['* ' ]);
2732
2833 /**
2934 * Find a model by its primary key or throw an exception.
3035 *
31- * @para string $id
32- *
33- * @return \Illuminate\Database\Eloquent\Model
36+ * @param string $id
37+ * @param array $columns
3438 *
39+ * @return Model
3540 * @throws \Illuminate\Database\Eloquent\ModelNotFoundException
3641 */
37- public function findOrFail ($ id );
42+ public function findOrFail (string $ id, array $ columns = [ ' * ' ] );
3843
3944 /**
4045 * Find data by field and value
4146 *
42- * @param $field
43- * @param $value
44- * @param array $columns
47+ * @param string $field
48+ * @param string $value
49+ * @param array $columns
4550 *
46- * @return Model|Collection
51+ * @return Model|object|static|null
4752 */
48- public function findBy ($ field , $ value , $ columns = ['* ' ]);
53+ public function findBy (string $ field , string $ value , array $ columns = ['* ' ]);
4954
5055 /**
5156 * Find data by field
@@ -54,38 +59,38 @@ public function findBy($field, $value, $columns = ['*']);
5459 * @param mixed $value
5560 * @param array $columns
5661 *
57- * @return mixed
62+ * @return \Illuminate\Database\Eloquent\Collection|static[]
5863 */
59- public function findAllBy ($ attribute , $ value , $ columns = ['* ' ]);
64+ public function findAllBy (string $ attribute , mixed $ value , array $ columns = ['* ' ]);
6065
6166 /**
6267 * Find data by multiple fields
6368 *
6469 * @param array $where
6570 * @param array $columns
6671 *
67- * @return mixed
72+ * @return \Illuminate\Database\Eloquent\Collection|static[]
6873 */
69- public function findWhere (array $ where , $ columns = ['* ' ]);
74+ public function findWhere (array $ where , array $ columns = ['* ' ]);
7075
7176 /**
7277 * Order results by.
7378 *
74- * @param string $column
75- * @param string $direction
79+ * @param mixed $column
80+ * @param string|null $direction
7681 *
77- * @return self
82+ * @return static
7883 */
79- public function orderBy ($ column , $ direction );
84+ public function orderBy (mixed $ column , string | null $ direction );
8085
8186 /**
8287 * Filter results by given query params.
8388 *
84- * @param string $queries
89+ * @param string|array $queries
8590 *
86- * @return self
91+ * @return static
8792 */
88- public function search ($ queries );
93+ public function search (string | array $ queries );
8994
9095 /**
9196 * Retrieve all data of repository
@@ -94,37 +99,37 @@ public function search($queries);
9499 *
95100 * @return Collection
96101 */
97- public function all ($ columns = ['* ' ]);
102+ public function all (array $ columns = ['* ' ]);
98103
99104 /**
100105 * Get an array with the values of a given column.
101106 *
102- * @param string $value
103- * @param string $key
107+ * @param string $value
108+ * @param string|null $key
104109 *
105- * @return array
110+ * @return array<TKey, TValue>
106111 */
107- public function pluck ($ value , $ key = null );
112+ public function pluck (string $ value , string $ key = null );
108113
109114 /**
110115 * Retrieve all data of repository, paginated
111116 *
112- * @param null $limit
113- * @param array $columns
117+ * @param mixed $per_page
118+ * @param string| array $columns
114119 *
115120 * @return \Illuminate\Contracts\Pagination\Paginator
116121 */
117- public function paginate ($ limit = null , $ columns = ['* ' ]);
122+ public function paginate (mixed $ per_page = null , string | array $ columns = ['* ' ]);
118123
119124 /**
120125 * Retrieve all data of repository, paginated
121126 *
122- * @param null $limit
123- * @param array $columns
127+ * @param mixed $per_page
128+ * @param string| array $columns
124129 *
125130 * @return \Illuminate\Contracts\Pagination\Paginator
126131 */
127- public function simplePaginate ($ limit = null , $ columns = ['* ' ]);
132+ public function simplePaginate (mixed $ per_page = null , string | array $ columns = ['* ' ]);
128133
129134 /**
130135 * Save a new entity in repository
@@ -151,10 +156,9 @@ public function update(Model $entity, array $attributes);
151156 * @param mixed $entity
152157 *
153158 * @return bool|null
154- *
155159 * @throws \Exception
156160 */
157- public function delete ($ entity );
161+ public function delete (mixed $ entity );
158162
159163 /**
160164 * Get the raw SQL statements for the request
@@ -169,9 +173,9 @@ public function toSql();
169173 * @param string $message
170174 * @param string $key
171175 *
172- * @return self
176+ * @return static
173177 */
174- public function addError ($ message , string $ key = 'message ' );
178+ public function addError (string $ message , string $ key = 'message ' );
175179
176180 /**
177181 * Get the repository's error messages.
@@ -187,5 +191,5 @@ public function getErrors();
187191 *
188192 * @return string
189193 */
190- public function getErrorMessage ($ default = '' );
191- }
194+ public function getErrorMessage (string $ default = '' ): string ;
195+ }
0 commit comments