@@ -230,7 +230,7 @@ def get_products(
230230 ),
231231 ]
232232 if end > 0 and end < len (self .product_ids ):
233- links .append (self .pagination_link (request , self .product_ids [end ]))
233+ links .append (self .pagination_link (request , self .product_ids [end ], limit ))
234234 return ProductsCollection (
235235 products = [
236236 self .product_routers [product_id ].get_product (request )
@@ -244,13 +244,14 @@ async def get_orders(
244244 ) -> OrderCollection :
245245 links : list [Link ] = []
246246 match await self ._get_orders (next , limit , request ):
247- case Success ((orders , Some ( pagination_token ) )):
247+ case Success ((orders , maybe_pagination_token )):
248248 for order in orders :
249- order .links .append (self .order_link (request , order ))
250- links .append (self .pagination_link (request , pagination_token ))
251- case Success ((orders , Nothing )): # noqa: F841
252- for order in orders :
253- order .links .append (self .order_link (request , order ))
249+ order .links .extend (self .order_links (order , request ))
250+ match maybe_pagination_token :
251+ case Some (x ):
252+ links .append (self .pagination_link (request , x , limit ))
253+ case Maybe .empty :
254+ pass
254255 case Failure (ValueError ()):
255256 raise NotFoundException (detail = "Error finding pagination token" )
256257 case Failure (e ):
@@ -272,7 +273,7 @@ async def get_order(self: Self, order_id: str, request: Request) -> Order:
272273 """
273274 match await self ._get_order (order_id , request ):
274275 case Success (Some (order )):
275- self .add_order_links (order , request )
276+ order . links . extend ( self .order_links (order , request ) )
276277 return order
277278 case Success (Maybe .empty ):
278279 raise NotFoundException ("Order not found" )
@@ -300,7 +301,7 @@ async def get_order_statuses(
300301 match await self ._get_order_statuses (order_id , next , limit , request ):
301302 case Success ((statuses , Some (pagination_token ))):
302303 links .append (self .order_statuses_link (request , order_id ))
303- links .append (self .pagination_link (request , pagination_token ))
304+ links .append (self .pagination_link (request , pagination_token , limit ))
304305 case Success ((statuses , Nothing )): # noqa: F841
305306 links .append (self .order_statuses_link (request , order_id ))
306307 case Failure (KeyError ()):
@@ -333,28 +334,19 @@ def generate_order_statuses_href(
333334 ) -> URL :
334335 return request .url_for (f"{ self .name } :list-order-statuses" , order_id = order_id )
335336
336- def add_order_links (self : Self , order : Order , request : Request ):
337- order . links . append (
337+ def order_links (self : Self , order : Order , request : Request ) -> list [ Link ] :
338+ return [
338339 Link (
339340 href = str (self .generate_order_href (request , order .id )),
340341 rel = "self" ,
341342 type = TYPE_GEOJSON ,
342- )
343- )
344- order .links .append (
343+ ),
345344 Link (
346345 href = str (self .generate_order_statuses_href (request , order .id )),
347346 rel = "monitor" ,
348347 type = TYPE_JSON ,
349348 ),
350- )
351-
352- def order_link (self , request : Request , order : Order ):
353- return Link (
354- href = str (request .url_for (f"{ self .name } :get-order" , order_id = order .id )),
355- rel = "self" ,
356- type = TYPE_JSON ,
357- )
349+ ]
358350
359351 def order_statuses_link (self , request : Request , order_id : str ):
360352 return Link (
@@ -368,9 +360,11 @@ def order_statuses_link(self, request: Request, order_id: str):
368360 type = TYPE_JSON ,
369361 )
370362
371- def pagination_link (self , request : Request , pagination_token : str ):
363+ def pagination_link (self , request : Request , pagination_token : str , limit : int ):
372364 return Link (
373- href = str (request .url .include_query_params (next = pagination_token )),
365+ href = str (
366+ request .url .include_query_params (next = pagination_token , limit = limit )
367+ ),
374368 rel = "next" ,
375369 type = TYPE_JSON ,
376370 )
0 commit comments