Module stac_fastapi.sqlalchemy.extensions.query¶
STAC SQLAlchemy specific query search model.
TODO: replace with stac-pydantic¶
Variables¶
NumType
logger
Classes¶
Operator¶
class Operator(
/,
*args,
**kwargs
)
Defines the set of operators supported by the API.
Ancestors (in MRO)¶
- builtins.str
- stac_pydantic.utils.AutoValueEnum
- enum.Enum
Class variables¶
eq
gt
gte
lt
lte
ne
QueryExtension¶
class QueryExtension(
conformance_classes: List[str] = NOTHING,
schema_href: Optional[str] = None
)
Query Extenson.
Override the POST request model to add validation against supported fields
Ancestors (in MRO)¶
- stac_fastapi.extensions.core.query.query.QueryExtension
- stac_fastapi.types.extension.ApiExtension
- abc.ABC
Class variables¶
GET
POST
Methods¶
get_request_model¶
def get_request_model(
self,
verb: Optional[str] = 'GET'
) -> Optional[pydantic.main.BaseModel]
Return the request model for the extension.method.
The model can differ based on HTTP verb
register¶
def register(
self,
app: fastapi.applications.FastAPI
) -> None
Register the extension with a FastAPI application.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
| app | None | target FastAPI application. | None |
Returns:
| Type | Description |
|---|---|
| None | None |
QueryExtensionPostRequest¶
class QueryExtensionPostRequest(
__pydantic_self__,
**data: Any
)
Queryable validation.
Add queryables validation to the POST request to raise errors for unsupported querys.
Ancestors (in MRO)¶
- pydantic.main.BaseModel
- pydantic.utils.Representation
Class variables¶
Config
Static methods¶
construct¶
def construct(
_fields_set: Optional[ForwardRef('SetStr')] = None,
**values: Any
) -> 'Model'
Creates a new model setting dict and fields_set from trusted or pre-validated data.
Default values are respected, but no other validation is performed.
Behaves as if Config.extra = 'allow' was set since it adds all passed values
from_orm¶
def from_orm(
obj: Any
) -> 'Model'
parse_file¶
def parse_file(
path: Union[str, pathlib.Path],
*,
content_type: 'unicode' = None,
encoding: 'unicode' = 'utf8',
proto: pydantic.parse.Protocol = None,
allow_pickle: bool = False
) -> 'Model'
parse_obj¶
def parse_obj(
obj: Any
) -> 'Model'
parse_raw¶
def parse_raw(
b: Union[str, bytes],
*,
content_type: 'unicode' = None,
encoding: 'unicode' = 'utf8',
proto: pydantic.parse.Protocol = None,
allow_pickle: bool = False
) -> 'Model'
schema¶
def schema(
by_alias: bool = True,
ref_template: 'unicode' = '#/definitions/{model}'
) -> 'DictStrAny'
schema_json¶
def schema_json(
*,
by_alias: bool = True,
ref_template: 'unicode' = '#/definitions/{model}',
**dumps_kwargs: Any
) -> 'unicode'
update_forward_refs¶
def update_forward_refs(
**localns: Any
) -> None
Try to update ForwardRefs on fields based on this Model, globalns and localns.
validate¶
def validate(
value: Any
) -> 'Model'
validate_query_fields¶
def validate_query_fields(
values: Dict
) -> Dict
Validate query fields.
Methods¶
copy¶
def copy(
self: 'Model',
*,
include: Union[ForwardRef('AbstractSetIntStr'), ForwardRef('MappingIntStrAny'), NoneType] = None,
exclude: Union[ForwardRef('AbstractSetIntStr'), ForwardRef('MappingIntStrAny'), NoneType] = None,
update: Optional[ForwardRef('DictStrAny')] = None,
deep: bool = False
) -> 'Model'
Duplicate a model, optionally choose which fields to include, exclude and change.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
| include | None | fields to include in new model | None |
| exclude | None | fields to exclude from new model, as with values this takes precedence over include | None |
| update | None | values to change/add in the new model. Note: the data is not validated before creating the new model: you should trust this data |
None |
| deep | None | set to True to make a deep copy of the model |
None |
Returns:
| Type | Description |
|---|---|
| None | new model instance |
dict¶
def dict(
self,
*,
include: Union[ForwardRef('AbstractSetIntStr'), ForwardRef('MappingIntStrAny'), NoneType] = None,
exclude: Union[ForwardRef('AbstractSetIntStr'), ForwardRef('MappingIntStrAny'), NoneType] = None,
by_alias: bool = False,
skip_defaults: Optional[bool] = None,
exclude_unset: bool = False,
exclude_defaults: bool = False,
exclude_none: bool = False
) -> 'DictStrAny'
Generate a dictionary representation of the model, optionally specifying which fields to include or exclude.
json¶
def json(
self,
*,
include: Union[ForwardRef('AbstractSetIntStr'), ForwardRef('MappingIntStrAny'), NoneType] = None,
exclude: Union[ForwardRef('AbstractSetIntStr'), ForwardRef('MappingIntStrAny'), NoneType] = None,
by_alias: bool = False,
skip_defaults: Optional[bool] = None,
exclude_unset: bool = False,
exclude_defaults: bool = False,
exclude_none: bool = False,
encoder: Optional[Callable[[Any], Any]] = None,
models_as_dict: bool = True,
**dumps_kwargs: Any
) -> 'unicode'
Generate a JSON representation of the model, include and exclude arguments as per dict().
encoder is an optional function to supply as default to json.dumps(), other arguments as per json.dumps().
QueryableTypes¶
class QueryableTypes(
)
Defines a set of queryable fields.
TODO: Let the user define these in a config file¶
TODO: There is a much better way of defining this field <> type mapping than two enums with same keys¶
Class variables¶
dtype
epsg
gsd
height
maxzoom
minzoom
orientation
width
Queryables¶
class Queryables(
/,
*args,
**kwargs
)
Queryable fields.
Define an enum of queryable fields and their data type. Queryable fields are explicitly defined for two reasons:
1. So the caller knows which fields they can query by
2. Because JSONB queries with sqlalchemy ORM require casting the type of the field at runtime
(see QueryableTypes)
TODO: Let the user define these in a config file¶
Ancestors (in MRO)¶
- builtins.str
- stac_pydantic.utils.AutoValueEnum
- enum.Enum
Class variables¶
dtype
epsg
foo
gsd
height
maxzoom
minzoom
orientation
width