22
33namespace Lomkit \Rest \Concerns \Resource ;
44
5- use Illuminate \Support \Facades \Cache ;
65use Lomkit \Rest \Http \Requests \RestRequest ;
76
87trait ConfiguresRestParameters
98{
10- //@TODO: V2: Pass all fields / relations / other methods in private
9+ /**
10+ * The calculated fields if already done in this request.
11+ *
12+ * @var array
13+ */
14+ protected array $ calculatedFields ;
15+
1116 /**
1217 * The fields that could be provided.
1318 *
@@ -29,19 +34,7 @@ public function fields(RestRequest $request): array
2934 */
3035 public function getFields (\Lomkit \Rest \Http \Requests \RestRequest $ request ): array
3136 {
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 ();
37+ return $ this ->calculatedFields ?? ($ this ->calculatedFields = $ this ->fields ($ request ));
4538 }
4639
4740 /**
@@ -86,6 +79,13 @@ function ($field) use ($prefix) {
8679 return $ fields ;
8780 }
8881
82+ /**
83+ * The calculated scopes if already done in this request.
84+ *
85+ * @var array
86+ */
87+ protected array $ calculatedScopes ;
88+
8989 /**
9090 * The scopes that could be provided.
9191 *
@@ -107,21 +107,16 @@ public function scopes(RestRequest $request): array
107107 */
108108 public function getScopes (\Lomkit \Rest \Http \Requests \RestRequest $ request ): array
109109 {
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 ();
110+ return $ this ->calculatedScopes ?? ($ this ->calculatedScopes = $ this ->scopes ($ request ));
123111 }
124112
113+ /**
114+ * The calculated limits if already done in this request.
115+ *
116+ * @var array
117+ */
118+ protected array $ calculatedLimits ;
119+
125120 /**
126121 * The limits that could be provided.
127122 *
@@ -147,18 +142,6 @@ public function limits(RestRequest $request): array
147142 */
148143 public function getLimits (\Lomkit \Rest \Http \Requests \RestRequest $ request ): array
149144 {
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 ();
145+ return $ this ->calculatedLimits ?? ($ this ->calculatedLimits = $ this ->limits ($ request ));
163146 }
164147}
0 commit comments