Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions stac_fastapi/api/stac_fastapi/api/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -86,12 +86,12 @@ def create_get_request_model(


def create_post_request_model(
extensions, base_model: BaseSearchPostRequest = BaseSearchGetRequest
extensions, base_model: BaseSearchPostRequest = BaseSearchPostRequest
):
"""Wrap create_request_model to create the POST request model."""
return create_request_model(
"SearchPostRequest",
base_model=BaseSearchPostRequest,
base_model=base_model,
extensions=extensions,
request_type="POST",
)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,28 @@
"""Filter extension request models."""

from enum import Enum
from typing import Any, Dict, Optional

import attr
from pydantic import BaseModel
from pydantic import BaseModel, Field

from stac_fastapi.types.search import APIRequest


class FilterLang(str, Enum):
"""Choices for filter-lang value in a POST request.

Based on https://github.com/radiantearth/stac-api-spec/tree/master/fragments/filter#queryables

Note the addition of cql2-json, which is used by the pgstac backend,
but is not included in the spec above.
"""

cql_json = "cql-json"
cql2_json = "cql2-json"
cql_text = "cql-text"


@attr.s
class FilterExtensionGetRequest(APIRequest):
"""Filter extension GET request model."""
Expand All @@ -19,3 +34,5 @@ class FilterExtensionPostRequest(BaseModel):
"""Filter extension POST request model."""

filter: Optional[Dict[str, Any]] = None
filter_crs: Optional[str] = Field(alias="filter-crs", default=None)
filter_lang: Optional[FilterLang] = Field(alias="filter-lang", default=None)
2 changes: 1 addition & 1 deletion stac_fastapi/pgstac/stac_fastapi/pgstac/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ async def _search_base(
pool = request.app.state.readpool

# pool = kwargs["request"].app.state.readpool
req = search_request.json(exclude_none=True)
req = search_request.json(exclude_none=True, by_alias=True)

try:
async with pool.acquire() as conn:
Expand Down
3 changes: 2 additions & 1 deletion stac_fastapi/pgstac/stac_fastapi/pgstac/types/search.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
"""stac_fastapi.types.search module."""

from typing import Optional
from typing import Dict, Optional

from pydantic import validator

Expand All @@ -14,6 +14,7 @@ class PgstacSearch(BaseSearchPostRequest):
"""

datetime: Optional[str] = None
conf: Optional[Dict] = None

@validator("datetime")
def validate_datetime(cls, v):
Expand Down