@@ -168,7 +168,7 @@ def get_products(
168168 ),
169169 ]
170170 if end > 0 and end < len (self .product_ids ):
171- links .append (self .pagination_link (request , self .product_ids [end ]))
171+ links .append (self .pagination_link (request , self .product_ids [end ], limit ))
172172 return ProductsCollection (
173173 products = [
174174 self .product_routers [product_id ].get_product (request )
@@ -182,13 +182,14 @@ async def get_orders(
182182 ) -> OrderCollection :
183183 links : list [Link ] = []
184184 match await self ._get_orders (next , limit , request ):
185- case Success ((orders , Some ( pagination_token ) )):
185+ case Success ((orders , maybe_pagination_token )):
186186 for order in orders :
187- order .links .append (self .order_link (request , order ))
188- links .append (self .pagination_link (request , pagination_token ))
189- case Success ((orders , Nothing )): # noqa: F841
190- for order in orders :
191- order .links .append (self .order_link (request , order ))
187+ order .links .extend (self .order_links (order , request ))
188+ match maybe_pagination_token :
189+ case Some (x ):
190+ links .append (self .pagination_link (request , x , limit ))
191+ case Maybe .empty :
192+ pass
192193 case Failure (ValueError ()):
193194 raise NotFoundException (detail = "Error finding pagination token" )
194195 case Failure (e ):
@@ -210,7 +211,7 @@ async def get_order(self: Self, order_id: str, request: Request) -> Order:
210211 """
211212 match await self ._get_order (order_id , request ):
212213 case Success (Some (order )):
213- self .add_order_links (order , request )
214+ order . links . extend ( self .order_links (order , request ) )
214215 return order
215216 case Success (Maybe .empty ):
216217 raise NotFoundException ("Order not found" )
@@ -238,7 +239,7 @@ async def get_order_statuses(
238239 match await self ._get_order_statuses (order_id , next , limit , request ):
239240 case Success ((statuses , Some (pagination_token ))):
240241 links .append (self .order_statuses_link (request , order_id ))
241- links .append (self .pagination_link (request , pagination_token ))
242+ links .append (self .pagination_link (request , pagination_token , limit ))
242243 case Success ((statuses , Nothing )): # noqa: F841
243244 links .append (self .order_statuses_link (request , order_id ))
244245 case Failure (KeyError ()):
@@ -271,28 +272,19 @@ def generate_order_statuses_href(
271272 ) -> URL :
272273 return request .url_for (f"{ self .name } :list-order-statuses" , order_id = order_id )
273274
274- def add_order_links (self , order : Order , request : Request ):
275- order . links . append (
275+ def order_links (self , order : Order , request : Request ) -> list [ Link ] :
276+ return [
276277 Link (
277278 href = str (self .generate_order_href (request , order .id )),
278279 rel = "self" ,
279280 type = TYPE_GEOJSON ,
280- )
281- )
282- order .links .append (
281+ ),
283282 Link (
284283 href = str (self .generate_order_statuses_href (request , order .id )),
285284 rel = "monitor" ,
286285 type = TYPE_JSON ,
287286 ),
288- )
289-
290- def order_link (self , request : Request , order : Order ):
291- return Link (
292- href = str (request .url_for (f"{ self .name } :get-order" , order_id = order .id )),
293- rel = "self" ,
294- type = TYPE_JSON ,
295- )
287+ ]
296288
297289 def order_statuses_link (self , request : Request , order_id : str ):
298290 return Link (
@@ -306,9 +298,11 @@ def order_statuses_link(self, request: Request, order_id: str):
306298 type = TYPE_JSON ,
307299 )
308300
309- def pagination_link (self , request : Request , pagination_token : str ):
301+ def pagination_link (self , request : Request , pagination_token : str , limit : int ):
310302 return Link (
311- href = str (request .url .include_query_params (next = pagination_token )),
303+ href = str (
304+ request .url .include_query_params (next = pagination_token , limit = limit )
305+ ),
312306 rel = "next" ,
313307 type = TYPE_JSON ,
314308 )
0 commit comments