Skip to content

Commit 690549e

Browse files
committed
update
1 parent 8c6742f commit 690549e

File tree

1 file changed

+16
-8
lines changed
  • stac_fastapi/core/stac_fastapi/core

1 file changed

+16
-8
lines changed

stac_fastapi/core/stac_fastapi/core/core.py

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)