diff --git a/stac_fastapi/elasticsearch/stac_fastapi/elasticsearch/database_logic.py b/stac_fastapi/elasticsearch/stac_fastapi/elasticsearch/database_logic.py index 336c8d07..02cfefa1 100644 --- a/stac_fastapi/elasticsearch/stac_fastapi/elasticsearch/database_logic.py +++ b/stac_fastapi/elasticsearch/stac_fastapi/elasticsearch/database_logic.py @@ -9,12 +9,12 @@ from elasticsearch_dsl import Q, Search from elasticsearch import exceptions, helpers # type: ignore -from stac_fastapi.elasticsearch import serializers from stac_fastapi.elasticsearch.config import AsyncElasticsearchSettings from stac_fastapi.elasticsearch.config import ( ElasticsearchSettings as SyncElasticsearchSettings, ) from stac_fastapi.elasticsearch.extensions import filter +from stac_fastapi.elasticsearch.serializers import CollectionSerializer, ItemSerializer from stac_fastapi.types.errors import ConflictError, NotFoundError from stac_fastapi.types.stac import Collection, Item @@ -296,11 +296,9 @@ class DatabaseLogic: client = AsyncElasticsearchSettings().create_client sync_client = SyncElasticsearchSettings().create_client - item_serializer: Type[serializers.ItemSerializer] = attr.ib( - default=serializers.ItemSerializer - ) - collection_serializer: Type[serializers.CollectionSerializer] = attr.ib( - default=serializers.CollectionSerializer + item_serializer: Type[ItemSerializer] = attr.ib(default=ItemSerializer) + collection_serializer: Type[CollectionSerializer] = attr.ib( + default=CollectionSerializer ) """CORE LOGIC""" diff --git a/stac_fastapi/elasticsearch/stac_fastapi/elasticsearch/types/search.py b/stac_fastapi/elasticsearch/stac_fastapi/elasticsearch/types/search.py deleted file mode 100644 index 26a2dbb6..00000000 --- a/stac_fastapi/elasticsearch/stac_fastapi/elasticsearch/types/search.py +++ /dev/null @@ -1,65 +0,0 @@ -"""stac_fastapi.types.search module. - -# TODO: replace with stac-pydantic -""" - -import logging -from typing import Dict, Optional, Set, Union - -from stac_pydantic.api.extensions.fields import FieldsExtension as FieldsBase - -from stac_fastapi.types.config import Settings - -logger = logging.getLogger("uvicorn") -logger.setLevel(logging.INFO) -# Be careful: https://github.com/samuelcolvin/pydantic/issues/1423#issuecomment-642797287 -NumType = Union[float, int] - - -class FieldsExtension(FieldsBase): - """FieldsExtension. - - Attributes: - include: set of fields to include. - exclude: set of fields to exclude. - """ - - include: Optional[Set[str]] = set() - exclude: Optional[Set[str]] = set() - - @staticmethod - def _get_field_dict(fields: Optional[Set[str]]) -> Dict: - """Pydantic include/excludes notation. - - Internal method to create a dictionary for advanced include or exclude of pydantic fields on model export - Ref: https://pydantic-docs.helpmanual.io/usage/exporting_models/#advanced-include-and-exclude - """ - field_dict = {} - for field in fields or []: - if "." in field: - parent, key = field.split(".") - if parent not in field_dict: - field_dict[parent] = {key} - else: - field_dict[parent].add(key) - else: - field_dict[field] = ... # type:ignore - return field_dict - - @property - def filter_fields(self) -> Dict: - """Create pydantic include/exclude expression. - - Create dictionary of fields to include/exclude on model export based on the included and excluded fields passed - to the API - Ref: https://pydantic-docs.helpmanual.io/usage/exporting_models/#advanced-include-and-exclude - """ - # Always include default_includes, even if they - # exist in the exclude list. - include = (self.include or set()) - (self.exclude or set()) - include |= Settings.get().default_includes or set() - - return { - "include": self._get_field_dict(include), - "exclude": self._get_field_dict(self.exclude), - }