Skip to content

Commit 3bb80f4

Browse files
committed
simplify
1 parent 97adfdc commit 3bb80f4

File tree

2 files changed

+13
-49
lines changed

2 files changed

+13
-49
lines changed

stac_fastapi/pgstac/app.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,9 @@
8585

8686
api = StacApi(
8787
settings=settings,
88-
extensions=extensions + [collection_search_extension],
88+
extensions=extensions + [collection_search_extension]
89+
if collection_search_extension
90+
else extensions,
8991
client=CoreCrudClient(
9092
post_request_model=post_request_model, # type: ignore
9193
collections_get_request_model=collections_get_request_model, # type: ignore

stac_fastapi/pgstac/core.py

Lines changed: 10 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ async def all_collections( # noqa: C901
6464
Collections which match the search criteria, returns all
6565
collections by default.
6666
"""
67+
base_url = get_base_url(request)
6768

6869
# Parse request parameters
6970
base_args = {
@@ -73,7 +74,7 @@ async def all_collections( # noqa: C901
7374
"query": orjson.loads(unquote_plus(query)) if query else query,
7475
}
7576

76-
clean = clean_search_args(
77+
clean_args = clean_search_args(
7778
base_args=base_args,
7879
datetime=datetime,
7980
fields=fields,
@@ -82,53 +83,14 @@ async def all_collections( # noqa: C901
8283
filter_lang=filter_lang,
8384
)
8485

85-
# Do the request
86-
try:
87-
search_request = self.collections_get_request_model(**clean)
88-
except ValidationError as e:
89-
raise HTTPException(
90-
status_code=400, detail=f"Invalid parameters provided {e}"
91-
) from e
92-
93-
return await self._collection_search_base(search_request, request=request)
94-
95-
async def _collection_search_base( # noqa: C901
96-
self,
97-
search_request: APIRequest,
98-
request: Request,
99-
) -> Collections:
100-
"""Cross catalog search (GET).
101-
102-
Called with `GET /search`.
103-
104-
Args:
105-
search_request: search request parameters.
106-
107-
Returns:
108-
All collections which match the search criteria.
109-
"""
110-
base_url = get_base_url(request)
111-
search_request_json = json.dumps(
112-
{
113-
key: value
114-
for key, value in search_request.__dict__.items()
115-
if value is not None
116-
}
117-
)
118-
119-
try:
120-
async with request.app.state.get_connection(request, "r") as conn:
121-
q, p = render(
122-
"""
123-
SELECT * FROM collection_search(:req::text::jsonb);
124-
""",
125-
req=search_request_json,
126-
)
127-
collections_result: Collections = await conn.fetchval(q, *p)
128-
except InvalidDatetimeFormatError as e:
129-
raise InvalidQueryParameter(
130-
f"Datetime parameter {search_request.datetime} is invalid."
131-
) from e
86+
async with request.app.state.get_connection(request, "r") as conn:
87+
q, p = render(
88+
"""
89+
SELECT * FROM collection_search(:req::text::jsonb);
90+
""",
91+
req=json.dumps(clean_args),
92+
)
93+
collections_result: Collections = await conn.fetchval(q, *p)
13294

13395
next: Optional[str] = None
13496
prev: Optional[str] = None

0 commit comments

Comments
 (0)