22
33namespace Lomkit \Rest \Concerns \Resource ;
44
5+ use Illuminate \Support \Facades \Cache ;
56use Lomkit \Rest \Http \Requests \RestRequest ;
67
78trait ConfiguresRestParameters
89{
10+ //@TODO: V2: Pass all fields / relations / other methods in private
911 /**
1012 * The fields that could be provided.
1113 *
@@ -18,6 +20,30 @@ public function fields(RestRequest $request): array
1820 return [];
1921 }
2022
23+ /**
24+ * Get the resource's fields.
25+ *
26+ * @param \Lomkit\Rest\Http\Requests\RestRequest $request
27+ *
28+ * @return array
29+ */
30+ public function getFields (\Lomkit \Rest \Http \Requests \RestRequest $ request ): array
31+ {
32+ $ resolver = function () use ($ request ) {
33+ return $ this ->fields ($ request );
34+ };
35+
36+ if ($ this ->isResourceCacheEnabled ()) {
37+ return Cache::remember (
38+ $ this ->getResourceCacheKey ($ request , 'fields ' ),
39+ $ this ->cacheResourceFor (),
40+ $ resolver
41+ );
42+ }
43+
44+ return $ resolver ();
45+ }
46+
2147 /**
2248 * Get nested fields by prefixing them with a given prefix.
2349 *
@@ -37,7 +63,7 @@ public function getNestedFields(RestRequest $request, string $prefix = '', array
3763 function ($ field ) use ($ prefix ) {
3864 return $ prefix .$ field ;
3965 },
40- $ this ->fields ($ request )
66+ $ this ->getFields ($ request )
4167 );
4268
4369 foreach (
@@ -72,6 +98,30 @@ public function scopes(RestRequest $request): array
7298 return [];
7399 }
74100
101+ /**
102+ * Get the resource's scopes.
103+ *
104+ * @param \Lomkit\Rest\Http\Requests\RestRequest $request
105+ *
106+ * @return array
107+ */
108+ public function getScopes (\Lomkit \Rest \Http \Requests \RestRequest $ request ): array
109+ {
110+ $ resolver = function () use ($ request ) {
111+ return $ this ->scopes ($ request );
112+ };
113+
114+ if ($ this ->isResourceCacheEnabled ()) {
115+ return Cache::remember (
116+ $ this ->getResourceCacheKey ($ request , 'scopes ' ),
117+ $ this ->cacheResourceFor (),
118+ $ resolver
119+ );
120+ }
121+
122+ return $ resolver ();
123+ }
124+
75125 /**
76126 * The limits that could be provided.
77127 *
@@ -87,4 +137,28 @@ public function limits(RestRequest $request): array
87137 50 ,
88138 ];
89139 }
140+
141+ /**
142+ * Get the resource's limits.
143+ *
144+ * @param \Lomkit\Rest\Http\Requests\RestRequest $request
145+ *
146+ * @return array
147+ */
148+ public function getLimits (\Lomkit \Rest \Http \Requests \RestRequest $ request ): array
149+ {
150+ $ resolver = function () use ($ request ) {
151+ return $ this ->limits ($ request );
152+ };
153+
154+ if ($ this ->isResourceCacheEnabled ()) {
155+ return Cache::remember (
156+ $ this ->getResourceCacheKey ($ request , 'limits ' ),
157+ $ this ->cacheResourceFor (),
158+ $ resolver
159+ );
160+ }
161+
162+ return $ resolver ();
163+ }
90164}
0 commit comments