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