44
55use Illuminate \Database \Eloquent \Model ;
66use Illuminate \Support \Str ;
7+ use Laravel \Scout \Searchable ;
78use Lomkit \Rest \Actions \Actionable ;
89use Lomkit \Rest \Concerns \Authorizable ;
910use Lomkit \Rest \Concerns \PerformsModelOperations ;
1314use Lomkit \Rest \Concerns \Resource \Paginable ;
1415use Lomkit \Rest \Concerns \Resource \Relationable ;
1516use Lomkit \Rest \Concerns \Resource \Rulable ;
17+ use Lomkit \Rest \Concerns \Resource \Scoutable ;
1618use Lomkit \Rest \Http \Requests \RestRequest ;
1719use Lomkit \Rest \Instructions \Instructionable ;
1820
@@ -22,6 +24,7 @@ class Resource implements \JsonSerializable
2224 use PerformsModelOperations;
2325 use Relationable;
2426 use Paginable;
27+ use Scoutable;
2528 use Rulable;
2629 use ConfiguresRestParameters;
2730 use Authorizable;
@@ -142,6 +145,11 @@ public function cacheAuthorizationFor()
142145 return now ()->addMinutes (config ('rest.authorizations.cache.default ' , 5 ));
143146 }
144147
148+ public function isModelSearchable ()
149+ {
150+ return in_array (Searchable::class, class_uses_recursive (static ::$ model ));
151+ }
152+
145153 /**
146154 * Serialize the resource into a JSON-serializable format.
147155 *
@@ -152,13 +160,15 @@ public function jsonSerialize(): mixed
152160 $ request = app (RestRequest::class);
153161
154162 return [
155- 'actions ' => collect ($ this ->getActions ($ request ))->map ->jsonSerialize ()->toArray (),
156- 'instructions ' => collect ($ this ->getInstructions ($ request ))->map ->jsonSerialize ()->toArray (),
157- 'fields ' => $ this ->getFields ($ request ),
158- 'limits ' => $ this ->getLimits ($ request ),
159- 'scopes ' => $ this ->getScopes ($ request ),
160- 'relations ' => collect ($ this ->getRelations ($ request ))->map ->jsonSerialize ()->toArray (),
161- 'rules ' => [
163+ 'actions ' => collect ($ this ->getActions ($ request ))->map ->jsonSerialize ()->toArray (),
164+ 'instructions ' => collect ($ this ->getInstructions ($ request ))->map ->jsonSerialize ()->toArray (),
165+ 'scout_instructions ' => collect ($ this ->getScoutInstructions ($ request ))->map ->jsonSerialize ()->toArray (),
166+ 'fields ' => $ this ->getFields ($ request ),
167+ 'scout_fields ' => $ this ->getScoutFields ($ request ),
168+ 'limits ' => $ this ->getLimits ($ request ),
169+ 'scopes ' => $ this ->getScopes ($ request ),
170+ 'relations ' => collect ($ this ->getRelations ($ request ))->map ->jsonSerialize ()->toArray (),
171+ 'rules ' => [
162172 'all ' => $ this ->rules ($ request ),
163173 'create ' => $ this ->createRules ($ request ),
164174 'update ' => $ this ->updateRules ($ request ),
0 commit comments