|
1 | 1 | """Item crud client.""" |
2 | 2 | import re |
3 | | -from datetime import datetime |
4 | 3 | from typing import Any, Dict, List, Optional, Union |
5 | 4 | from urllib.parse import unquote_plus, urljoin |
6 | 5 |
|
|
16 | 15 | from stac_fastapi.types.core import AsyncBaseCoreClient |
17 | 16 | from stac_fastapi.types.errors import InvalidQueryParameter, NotFoundError |
18 | 17 | from stac_fastapi.types.requests import get_base_url |
| 18 | +from stac_fastapi.types.rfc3339 import DateTimeType |
19 | 19 | from stac_fastapi.types.stac import Collection, Collections, Item, ItemCollection |
20 | 20 | from stac_pydantic.links import Relations |
21 | | -from stac_pydantic.shared import MimeTypes |
| 21 | +from stac_pydantic.shared import BBox, MimeTypes |
22 | 22 |
|
23 | 23 | from stac_fastapi.pgstac.config import Settings |
24 | 24 | from stac_fastapi.pgstac.models.links import ( |
|
28 | 28 | PagingLinks, |
29 | 29 | ) |
30 | 30 | from stac_fastapi.pgstac.types.search import PgstacSearch |
31 | | -from stac_fastapi.pgstac.utils import filter_fields |
| 31 | +from stac_fastapi.pgstac.utils import filter_fields, format_datetime_range |
32 | 32 |
|
33 | 33 | NumType = Union[float, int] |
34 | 34 |
|
@@ -155,8 +155,12 @@ async def _search_base( |
155 | 155 |
|
156 | 156 | settings: Settings = request.app.state.settings |
157 | 157 |
|
| 158 | + if search_request.datetime: |
| 159 | + search_request.datetime = format_datetime_range(search_request.datetime) |
| 160 | + |
158 | 161 | search_request.conf = search_request.conf or {} |
159 | 162 | search_request.conf["nohydrate"] = settings.use_api_hydrate |
| 163 | + |
160 | 164 | search_request_json = search_request.json(exclude_none=True, by_alias=True) |
161 | 165 |
|
162 | 166 | try: |
@@ -248,8 +252,8 @@ async def item_collection( |
248 | 252 | self, |
249 | 253 | collection_id: str, |
250 | 254 | request: Request, |
251 | | - bbox: Optional[List[NumType]] = None, |
252 | | - datetime: Optional[Union[str, datetime]] = None, |
| 255 | + bbox: Optional[BBox] = None, |
| 256 | + datetime: Optional[DateTimeType] = None, |
253 | 257 | limit: Optional[int] = None, |
254 | 258 | token: str = None, |
255 | 259 | **kwargs, |
@@ -341,8 +345,8 @@ async def get_search( |
341 | 345 | request: Request, |
342 | 346 | collections: Optional[List[str]] = None, |
343 | 347 | ids: Optional[List[str]] = None, |
344 | | - bbox: Optional[List[NumType]] = None, |
345 | | - datetime: Optional[Union[str, datetime]] = None, |
| 348 | + bbox: Optional[BBox] = None, |
| 349 | + datetime: Optional[DateTimeType] = None, |
346 | 350 | limit: Optional[int] = None, |
347 | 351 | query: Optional[str] = None, |
348 | 352 | token: Optional[str] = None, |
|
0 commit comments