@@ -310,7 +310,13 @@ async def item_collection(
310310 Exception: If any error occurs while reading the items from the database.
311311 """
312312 request : Request = kwargs ["request" ]
313+ # Ensure the collection exists; otherwise return 404 to match API contract
314+ try :
315+ await self .get_collection (collection_id = collection_id , request = request )
316+ except Exception :
317+ raise HTTPException (status_code = 404 , detail = "Collection not found" )
313318
319+ # Delegate directly to GET search for consistency
314320 return await self .get_search (
315321 request = request ,
316322 collections = [collection_id ],
@@ -481,13 +487,15 @@ async def post_search(
481487
482488 search = self .database .apply_bbox_filter (search = search , bbox = bbox )
483489
484- if search_request .intersects :
490+ if hasattr (search_request , "intersects" ) and getattr (
491+ search_request , "intersects"
492+ ):
485493 search = self .database .apply_intersects_filter (
486- search = search , intersects = search_request . intersects
494+ search = search , intersects = getattr ( search_request , " intersects" )
487495 )
488496
489- if search_request . query :
490- for field_name , expr in search_request . query .items ():
497+ if hasattr ( search_request , " query" ) and getattr ( search_request , "query" ) :
498+ for field_name , expr in getattr ( search_request , " query" ) .items ():
491499 field = "properties__" + field_name
492500 for op , value in expr .items ():
493501 # Convert enum to string
@@ -516,8 +524,8 @@ async def post_search(
516524 )
517525
518526 sort = None
519- if search_request . sortby :
520- sort = self .database .populate_sort (search_request . sortby )
527+ if hasattr ( search_request , " sortby" ) and getattr ( search_request , "sortby" ) :
528+ sort = self .database .populate_sort (getattr ( search_request , " sortby" ) )
521529
522530 limit = 10
523531 if search_request .limit :
@@ -526,9 +534,9 @@ async def post_search(
526534 items , maybe_count , next_token = await self .database .execute_search (
527535 search = search ,
528536 limit = limit ,
529- token = search_request . token ,
537+ token = getattr ( search_request , " token" , None ) ,
530538 sort = sort ,
531- collection_ids = search_request . collections ,
539+ collection_ids = getattr ( search_request , " collections" , None ) ,
532540 datetime_search = datetime_search ,
533541 )
534542
0 commit comments