Skip to content

Commit 1fd2551

Browse files
author
Grzegorz Pustulka
committed
docs
1 parent 256f52b commit 1fd2551

File tree

23 files changed

+1207
-188
lines changed

23 files changed

+1207
-188
lines changed

stac_fastapi/elasticsearch/stac_fastapi/elasticsearch/database_logic.py

Lines changed: 17 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import logging
66
from base64 import urlsafe_b64decode, urlsafe_b64encode
77
from copy import deepcopy
8-
from typing import Any, Dict, Iterable, List, Optional, Tuple, Type, Union
8+
from typing import Any, Dict, Iterable, List, Optional, Tuple, Type
99

1010
import attr
1111
import elasticsearch.helpers as helpers
@@ -29,18 +29,10 @@
2929
get_queryables_mapping_shared,
3030
index_alias_by_collection_id,
3131
index_by_collection_id,
32-
indices,
3332
mk_item_id,
3433
populate_sort_shared,
35-
return_date,
3634
validate_refresh,
3735
)
38-
from stac_fastapi.sfeos_helpers.search_engine import (
39-
BaseIndexInserter,
40-
IndexInsertionFactory,
41-
IndexSelectionStrategy,
42-
IndexSelectorFactory,
43-
)
4436
from stac_fastapi.sfeos_helpers.mappings import (
4537
AGGREGATION_MAPPING,
4638
COLLECTIONS_INDEX,
@@ -49,6 +41,12 @@
4941
ITEMS_INDEX_PREFIX,
5042
Geometry,
5143
)
44+
from stac_fastapi.sfeos_helpers.search_engine import (
45+
BaseIndexInserter,
46+
IndexInsertionFactory,
47+
IndexSelectionStrategy,
48+
IndexSelectorFactory,
49+
)
5250
from stac_fastapi.types.errors import ConflictError, NotFoundError
5351
from stac_fastapi.types.stac import Collection, Item
5452

@@ -139,14 +137,18 @@ def __attrs_post_init__(self):
139137
"""Initialize clients after the class is instantiated."""
140138
self.client = self.async_settings.create_client
141139
self.sync_client = self.sync_settings.create_client
142-
self.async_index_inserter = IndexInsertionFactory.create_async_insertion_strategy(
143-
self.client
140+
self.async_index_inserter = (
141+
IndexInsertionFactory.create_async_insertion_strategy(self.client)
144142
)
145143
self.sync_index_inserter = IndexInsertionFactory.create_sync_insertion_strategy(
146144
self.sync_client
147145
)
148-
self.async_index_selector = IndexSelectorFactory.create_async_selector(self.client)
149-
self.sync_index_selector = IndexSelectorFactory.create_sync_selector(self.sync_client)
146+
self.async_index_selector = IndexSelectorFactory.create_async_selector(
147+
self.client
148+
)
149+
self.sync_index_selector = IndexSelectorFactory.create_sync_selector(
150+
self.sync_client
151+
)
150152

151153
item_serializer: Type[ItemSerializer] = attr.ib(default=ItemSerializer)
152154
collection_serializer: Type[CollectionSerializer] = attr.ib(
@@ -894,14 +896,8 @@ async def delete_item(self, item_id: str, collection_id: str, **kwargs: Any):
894896
# Perform the delete operation
895897
await self.client.delete_by_query(
896898
index=index_alias_by_collection_id(collection_id),
897-
body={
898-
"query": {
899-
"term": {
900-
"_id": mk_item_id(item_id, collection_id)
901-
}
902-
}
903-
},
904-
refresh=refresh
899+
body={"query": {"term": {"_id": mk_item_id(item_id, collection_id)}}},
900+
refresh=refresh,
905901
)
906902
except ESNotFoundError:
907903
# Raise a custom NotFoundError if the item does not exist

stac_fastapi/opensearch/stac_fastapi/opensearch/database_logic.py

Lines changed: 16 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -28,30 +28,25 @@
2828
delete_item_index_shared,
2929
get_queryables_mapping_shared,
3030
index_alias_by_collection_id,
31-
index_by_collection_id,
32-
indices,
3331
mk_item_id,
3432
populate_sort_shared,
35-
return_date,
3633
validate_refresh,
3734
)
38-
from stac_fastapi.sfeos_helpers.search_engine import (
39-
BaseIndexInserter,
40-
IndexInsertionFactory,
41-
IndexSelectionStrategy,
42-
IndexSelectorFactory,
43-
)
4435
from stac_fastapi.sfeos_helpers.mappings import (
4536
AGGREGATION_MAPPING,
4637
COLLECTIONS_INDEX,
4738
DEFAULT_SORT,
4839
ES_COLLECTIONS_MAPPINGS,
49-
ES_ITEMS_MAPPINGS,
50-
ES_ITEMS_SETTINGS,
5140
ITEM_INDICES,
5241
ITEMS_INDEX_PREFIX,
5342
Geometry,
5443
)
44+
from stac_fastapi.sfeos_helpers.search_engine import (
45+
BaseIndexInserter,
46+
IndexInsertionFactory,
47+
IndexSelectionStrategy,
48+
IndexSelectorFactory,
49+
)
5550
from stac_fastapi.types.errors import ConflictError, NotFoundError
5651
from stac_fastapi.types.stac import Collection, Item
5752

@@ -126,14 +121,18 @@ def __attrs_post_init__(self):
126121
"""Initialize clients after the class is instantiated."""
127122
self.client = self.async_settings.create_client
128123
self.sync_client = self.sync_settings.create_client
129-
self.async_index_inserter = IndexInsertionFactory.create_async_insertion_strategy(
130-
self.client
124+
self.async_index_inserter = (
125+
IndexInsertionFactory.create_async_insertion_strategy(self.client)
131126
)
132127
self.sync_index_inserter = IndexInsertionFactory.create_sync_insertion_strategy(
133128
self.sync_client
134129
)
135-
self.async_index_selector = IndexSelectorFactory.create_async_selector(self.client)
136-
self.sync_index_selector = IndexSelectorFactory.create_sync_selector(self.sync_client)
130+
self.async_index_selector = IndexSelectorFactory.create_async_selector(
131+
self.client
132+
)
133+
self.sync_index_selector = IndexSelectorFactory.create_sync_selector(
134+
self.sync_client
135+
)
137136

138137
item_serializer: Type[ItemSerializer] = attr.ib(default=ItemSerializer)
139138
collection_serializer: Type[CollectionSerializer] = attr.ib(
@@ -880,14 +879,8 @@ async def delete_item(self, item_id: str, collection_id: str, **kwargs: Any):
880879
try:
881880
await self.client.delete_by_query(
882881
index=index_alias_by_collection_id(collection_id),
883-
body={
884-
"query": {
885-
"term": {
886-
"_id": mk_item_id(item_id, collection_id)
887-
}
888-
}
889-
},
890-
refresh=refresh
882+
body={"query": {"term": {"_id": mk_item_id(item_id, collection_id)}}},
883+
refresh=refresh,
891884
)
892885
except exceptions.NotFoundError:
893886
raise NotFoundError(

stac_fastapi/sfeos_helpers/stac_fastapi/sfeos_helpers/database/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
"""
3131

3232
# Re-export all functions for backward compatibility
33-
from .datetime import extract_date, return_date, extract_first_date_from_index
33+
from .datetime import extract_date, extract_first_date_from_index, return_date
3434
from .document import mk_item_id
3535
from .index import (
3636
create_index_templates_shared,
@@ -71,4 +71,4 @@
7171
"return_date",
7272
"extract_date",
7373
"extract_first_date_from_index",
74-
]
74+
]

stac_fastapi/sfeos_helpers/stac_fastapi/sfeos_helpers/database/datetime.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,13 @@ def return_date(
4040
if isinstance(interval, str):
4141
if "/" in interval:
4242
parts = interval.split("/")
43-
result["gte"] = parts[0] if parts[0] != ".." else datetime_type.min.isoformat() + "Z"
43+
result["gte"] = (
44+
parts[0] if parts[0] != ".." else datetime_type.min.isoformat() + "Z"
45+
)
4446
result["lte"] = (
45-
parts[1] if len(parts) > 1 and parts[1] != ".." else datetime_type.max.isoformat() + "Z"
47+
parts[1]
48+
if len(parts) > 1 and parts[1] != ".."
49+
else datetime_type.max.isoformat() + "Z"
4650
)
4751
else:
4852
converted_time = interval if interval != ".." else None
@@ -72,7 +76,7 @@ def extract_date(date_str: str) -> date:
7276
Returns:
7377
A date object extracted from the input string.
7478
"""
75-
date_str = date_str.replace('Z', '+00:00')
79+
date_str = date_str.replace("Z", "+00:00")
7680
return datetime_type.fromisoformat(date_str).date()
7781

7882

@@ -89,6 +93,6 @@ def extract_first_date_from_index(index_name: str) -> date:
8993
A date object extracted from the first date pattern found in the index name.
9094
9195
"""
92-
date_pattern = r'\d{4}-\d{2}-\d{2}'
96+
date_pattern = r"\d{4}-\d{2}-\d{2}"
9397
match = re.search(date_pattern, index_name)
94-
return datetime_type.strptime(match.group(0), "%Y-%m-%d").date()
98+
return datetime_type.strptime(match.group(0), "%Y-%m-%d").date()

stac_fastapi/sfeos_helpers/stac_fastapi/sfeos_helpers/database/document.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,7 @@
44
including document ID generation and bulk action creation.
55
"""
66

7-
from typing import Any, Dict, List
8-
97
from stac_fastapi.sfeos_helpers.database.index import index_alias_by_collection_id
10-
from stac_fastapi.types.stac import Item
118

129

1310
def mk_item_id(item_id: str, collection_id: str) -> str:

stac_fastapi/sfeos_helpers/stac_fastapi/sfeos_helpers/database/index.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
from datetime import datetime
77
from functools import lru_cache
88
from typing import Any, List, Optional
9+
910
from dateutil.parser import parse
1011

1112
from stac_fastapi.sfeos_helpers.mappings import (
@@ -100,9 +101,13 @@ def extract_date_range_from_index(index_name: str) -> tuple:
100101
end_date = datetime.strptime(dates[1], "%Y-%m-%d")
101102
return start_date, end_date
102103

103-
def is_index_in_range(start_date: datetime, end_date: datetime, gte_dt: datetime, lte_dt: datetime) -> bool:
104+
def is_index_in_range(
105+
start_date: datetime, end_date: datetime, gte_dt: datetime, lte_dt: datetime
106+
) -> bool:
104107
"""Check if index date range overlaps with filter range."""
105-
return not (end_date.date() < gte_dt.date() or start_date.date() > lte_dt.date())
108+
return not (
109+
end_date.date() < gte_dt.date() or start_date.date() > lte_dt.date()
110+
)
106111

107112
gte_dt = parse_datetime(gte) if gte else datetime.min.replace(microsecond=0)
108113
lte_dt = parse_datetime(lte) if lte else datetime.max.replace(microsecond=0)

stac_fastapi/sfeos_helpers/stac_fastapi/sfeos_helpers/search_engine/__init__.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
"""Search engine index management package."""
2+
13
from .adapters import (
24
ElasticsearchAdapter,
35
OpenSearchAdapter,
@@ -10,8 +12,8 @@
1012
from .managers import DatetimeIndexManager, IndexSizeManager
1113
from .selection import (
1214
AsyncDatetimeBasedIndexSelector,
13-
IndexSelectorFactory,
1415
IndexSelectionStrategy,
16+
IndexSelectorFactory,
1517
SyncDatetimeBasedIndexSelector,
1618
UnfilteredIndexSelector,
1719
)
@@ -39,4 +41,4 @@
3941
"SyncDatetimeBasedIndexSelector",
4042
"UnfilteredIndexSelector",
4143
"IndexSelectorFactory",
42-
]
44+
]

0 commit comments

Comments
 (0)