44
55use Illuminate \Support \Facades \Cache ;
66use Lomkit \Rest \Http \Requests \RestRequest ;
7+ use Lomkit \Rest \Tests \Support \Rest \Resources \HasOneResource ;
78
89trait ConfiguresRestParameters
910{
10- //@TODO: V2: Pass all fields / relations / other methods in private
11+
12+ /**
13+ * The calculated fields if already done in this request.
14+ *
15+ * @var array
16+ */
17+ protected array $ calculatedFields ;
18+
1119 /**
1220 * The fields that could be provided.
1321 *
@@ -29,19 +37,7 @@ public function fields(RestRequest $request): array
2937 */
3038 public function getFields (\Lomkit \Rest \Http \Requests \RestRequest $ request ): array
3139 {
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 ();
40+ return $ this ->calculatedFields ?? ($ this ->calculatedFields = $ this ->fields ($ request ));
4541 }
4642
4743 /**
@@ -86,6 +82,13 @@ function ($field) use ($prefix) {
8682 return $ fields ;
8783 }
8884
85+ /**
86+ * The calculated scopes if already done in this request.
87+ *
88+ * @var array
89+ */
90+ protected array $ calculatedScopes ;
91+
8992 /**
9093 * The scopes that could be provided.
9194 *
@@ -107,21 +110,16 @@ public function scopes(RestRequest $request): array
107110 */
108111 public function getScopes (\Lomkit \Rest \Http \Requests \RestRequest $ request ): array
109112 {
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 ();
113+ return $ this ->calculatedScopes ?? ($ this ->calculatedScopes = $ this ->scopes ($ request ));
123114 }
124115
116+ /**
117+ * The calculated limits if already done in this request.
118+ *
119+ * @var array
120+ */
121+ protected array $ calculatedLimits ;
122+
125123 /**
126124 * The limits that could be provided.
127125 *
@@ -147,18 +145,6 @@ public function limits(RestRequest $request): array
147145 */
148146 public function getLimits (\Lomkit \Rest \Http \Requests \RestRequest $ request ): array
149147 {
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 ();
148+ return $ this ->calculatedLimits ?? ($ this ->calculatedLimits = $ this ->limits ($ request ));
163149 }
164150}
0 commit comments