Skip to content

Commit 5990443

Browse files
committed
update app
1 parent b057c51 commit 5990443

File tree

3 files changed

+107
-63
lines changed

3 files changed

+107
-63
lines changed

dockerfiles/Dockerfile.dev.os

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,10 @@ FROM python:3.10-slim
44
# update apt pkgs, and install build-essential for ciso8601
55
RUN apt-get update && \
66
apt-get -y upgrade && \
7-
apt-get -y install build-essential && \
7+
apt-get -y install build-essential git && \
88
apt-get clean && \
99
rm -rf /var/lib/apt/lists/*
1010

11-
RUN apt-get -y install git
1211
# update certs used by Requests
1312
ENV CURL_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt
1413

stac_fastapi/elasticsearch/stac_fastapi/elasticsearch/app.py

Lines changed: 53 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
"""FastAPI application."""
22

3-
import logging
43
import os
54
from contextlib import asynccontextmanager
65

@@ -22,7 +21,6 @@
2221
from stac_fastapi.core.rate_limit import setup_rate_limit
2322
from stac_fastapi.core.route_dependencies import get_route_dependencies
2423
from stac_fastapi.core.session import Session
25-
from stac_fastapi.core.utilities import get_bool_env
2624
from stac_fastapi.elasticsearch.config import ElasticsearchSettings
2725
from stac_fastapi.elasticsearch.database_logic import (
2826
DatabaseLogic,
@@ -31,23 +29,23 @@
3129
)
3230
from stac_fastapi.extensions.core import (
3331
AggregationExtension,
32+
CollectionSearchExtension,
33+
CollectionSearchFilterExtension,
3434
FilterExtension,
3535
FreeTextExtension,
3636
SortExtension,
3737
TokenPaginationExtension,
3838
TransactionExtension,
3939
)
40+
from stac_fastapi.extensions.core.fields import FieldsConformanceClasses
4041
from stac_fastapi.extensions.core.filter import FilterConformanceClasses
42+
from stac_fastapi.extensions.core.free_text import FreeTextConformanceClasses
43+
from stac_fastapi.extensions.core.query import QueryConformanceClasses
44+
from stac_fastapi.extensions.core.sort import SortConformanceClasses
4145
from stac_fastapi.extensions.third_party import BulkTransactionExtension
4246
from stac_fastapi.sfeos_helpers.aggregation import EsAsyncBaseAggregationClient
4347
from stac_fastapi.sfeos_helpers.filter import EsAsyncBaseFiltersClient
4448

45-
logging.basicConfig(level=logging.INFO)
46-
logger = logging.getLogger(__name__)
47-
48-
TRANSACTIONS_EXTENSIONS = get_bool_env("ENABLE_TRANSACTIONS_EXTENSIONS", default=True)
49-
logger.info("TRANSACTIONS_EXTENSIONS is set to %s", TRANSACTIONS_EXTENSIONS)
50-
5149
settings = ElasticsearchSettings()
5250
session = Session.create_from_settings(settings)
5351

@@ -57,7 +55,7 @@
5755
client=EsAsyncBaseFiltersClient(database=database_logic)
5856
)
5957
filter_extension.conformance_classes.append(
60-
FilterConformanceClasses.ADVANCED_COMPARISON_OPERATORS
58+
"http://www.opengis.net/spec/cql2/1.0/conf/advanced-comparison-operators"
6159
)
6260

6361
aggregation_extension = AggregationExtension(
@@ -69,6 +67,20 @@
6967
aggregation_extension.GET = EsAggregationExtensionGetRequest
7068

7169
search_extensions = [
70+
TransactionExtension(
71+
client=TransactionsClient(
72+
database=database_logic, session=session, settings=settings
73+
),
74+
settings=settings,
75+
),
76+
BulkTransactionExtension(
77+
client=BulkTransactionsClient(
78+
database=database_logic,
79+
session=session,
80+
settings=settings,
81+
)
82+
),
83+
CollectionSearchExtension(),
7284
FieldsExtension(),
7385
QueryExtension(),
7486
SortExtension(),
@@ -77,29 +89,40 @@
7789
FreeTextExtension(),
7890
]
7991

80-
if TRANSACTIONS_EXTENSIONS:
81-
search_extensions.insert(
82-
0,
83-
TransactionExtension(
84-
client=TransactionsClient(
85-
database=database_logic, session=session, settings=settings
86-
),
87-
settings=settings,
88-
),
89-
)
90-
search_extensions.insert(
91-
1,
92-
BulkTransactionExtension(
93-
client=BulkTransactionsClient(
94-
database=database_logic,
95-
session=session,
96-
settings=settings,
97-
)
98-
),
99-
)
100-
10192
extensions = [aggregation_extension] + search_extensions
10293

94+
post_request_model = create_post_request_model(search_extensions)
95+
96+
# Define the collection search extensions map
97+
cs_extensions_map = {
98+
"query": QueryExtension(conformance_classes=[QueryConformanceClasses.COLLECTIONS]),
99+
"sort": SortExtension(conformance_classes=[SortConformanceClasses.COLLECTIONS]),
100+
"fields": FieldsExtension(
101+
conformance_classes=[FieldsConformanceClasses.COLLECTIONS]
102+
),
103+
"filter": CollectionSearchFilterExtension(
104+
conformance_classes=[FilterConformanceClasses.COLLECTIONS]
105+
),
106+
"free_text": FreeTextExtension(
107+
conformance_classes=[FreeTextConformanceClasses.COLLECTIONS],
108+
),
109+
}
110+
111+
# Determine enabled extensions (customize as needed)
112+
enabled_extensions = set(cs_extensions_map.keys())
113+
114+
# Build the enabled collection search extensions
115+
cs_extensions = [
116+
extension
117+
for key, extension in cs_extensions_map.items()
118+
if key in enabled_extensions
119+
]
120+
121+
# Create the CollectionSearchExtension from the enabled extensions
122+
collection_search_extension = CollectionSearchExtension.from_extensions(cs_extensions)
123+
collections_get_request_model = collection_search_extension.GET
124+
extensions.append(collection_search_extension)
125+
103126
database_logic.extensions = [type(ext).__name__ for ext in extensions]
104127

105128
post_request_model = create_post_request_model(search_extensions)

stac_fastapi/opensearch/stac_fastapi/opensearch/app.py

Lines changed: 53 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
"""FastAPI application."""
22

3-
import logging
43
import os
54
from contextlib import asynccontextmanager
65

@@ -22,16 +21,21 @@
2221
from stac_fastapi.core.rate_limit import setup_rate_limit
2322
from stac_fastapi.core.route_dependencies import get_route_dependencies
2423
from stac_fastapi.core.session import Session
25-
from stac_fastapi.core.utilities import get_bool_env
2624
from stac_fastapi.extensions.core import (
2725
AggregationExtension,
26+
CollectionSearchExtension,
27+
CollectionSearchFilterExtension,
2828
FilterExtension,
2929
FreeTextExtension,
3030
SortExtension,
3131
TokenPaginationExtension,
3232
TransactionExtension,
3333
)
34+
from stac_fastapi.extensions.core.fields import FieldsConformanceClasses
3435
from stac_fastapi.extensions.core.filter import FilterConformanceClasses
36+
from stac_fastapi.extensions.core.free_text import FreeTextConformanceClasses
37+
from stac_fastapi.extensions.core.query import QueryConformanceClasses
38+
from stac_fastapi.extensions.core.sort import SortConformanceClasses
3539
from stac_fastapi.extensions.third_party import BulkTransactionExtension
3640
from stac_fastapi.opensearch.config import OpensearchSettings
3741
from stac_fastapi.opensearch.database_logic import (
@@ -42,12 +46,6 @@
4246
from stac_fastapi.sfeos_helpers.aggregation import EsAsyncBaseAggregationClient
4347
from stac_fastapi.sfeos_helpers.filter import EsAsyncBaseFiltersClient
4448

45-
logging.basicConfig(level=logging.INFO)
46-
logger = logging.getLogger(__name__)
47-
48-
TRANSACTIONS_EXTENSIONS = get_bool_env("ENABLE_TRANSACTIONS_EXTENSIONS", default=True)
49-
logger.info("TRANSACTIONS_EXTENSIONS is set to %s", TRANSACTIONS_EXTENSIONS)
50-
5149
settings = OpensearchSettings()
5250
session = Session.create_from_settings(settings)
5351

@@ -57,7 +55,7 @@
5755
client=EsAsyncBaseFiltersClient(database=database_logic)
5856
)
5957
filter_extension.conformance_classes.append(
60-
FilterConformanceClasses.ADVANCED_COMPARISON_OPERATORS
58+
"http://www.opengis.net/spec/cql2/1.0/conf/advanced-comparison-operators"
6159
)
6260

6361
aggregation_extension = AggregationExtension(
@@ -69,6 +67,20 @@
6967
aggregation_extension.GET = EsAggregationExtensionGetRequest
7068

7169
search_extensions = [
70+
TransactionExtension(
71+
client=TransactionsClient(
72+
database=database_logic, session=session, settings=settings
73+
),
74+
settings=settings,
75+
),
76+
BulkTransactionExtension(
77+
client=BulkTransactionsClient(
78+
database=database_logic,
79+
session=session,
80+
settings=settings,
81+
)
82+
),
83+
CollectionSearchExtension(),
7284
FieldsExtension(),
7385
QueryExtension(),
7486
SortExtension(),
@@ -77,29 +89,39 @@
7789
FreeTextExtension(),
7890
]
7991

92+
extensions = [aggregation_extension] + search_extensions
8093

81-
if TRANSACTIONS_EXTENSIONS:
82-
search_extensions.insert(
83-
0,
84-
TransactionExtension(
85-
client=TransactionsClient(
86-
database=database_logic, session=session, settings=settings
87-
),
88-
settings=settings,
89-
),
90-
)
91-
search_extensions.insert(
92-
1,
93-
BulkTransactionExtension(
94-
client=BulkTransactionsClient(
95-
database=database_logic,
96-
session=session,
97-
settings=settings,
98-
)
99-
),
100-
)
94+
post_request_model = create_post_request_model(search_extensions)
10195

102-
extensions = [aggregation_extension] + search_extensions
96+
# Define the collection search extensions map
97+
cs_extensions_map = {
98+
"query": QueryExtension(conformance_classes=[QueryConformanceClasses.COLLECTIONS]),
99+
"sort": SortExtension(conformance_classes=[SortConformanceClasses.COLLECTIONS]),
100+
"fields": FieldsExtension(
101+
conformance_classes=[FieldsConformanceClasses.COLLECTIONS]
102+
),
103+
"filter": CollectionSearchFilterExtension(
104+
conformance_classes=[FilterConformanceClasses.COLLECTIONS]
105+
),
106+
"free_text": FreeTextExtension(
107+
conformance_classes=[FreeTextConformanceClasses.COLLECTIONS],
108+
),
109+
}
110+
111+
# Determine enabled extensions (customize as needed)
112+
enabled_extensions = set(cs_extensions_map.keys())
113+
114+
# Build the enabled collection search extensions
115+
cs_extensions = [
116+
extension
117+
for key, extension in cs_extensions_map.items()
118+
if key in enabled_extensions
119+
]
120+
121+
# Create the CollectionSearchExtension from the enabled extensions
122+
collection_search_extension = CollectionSearchExtension.from_extensions(cs_extensions)
123+
collections_get_request_model = collection_search_extension.GET
124+
extensions.append(collection_search_extension)
103125

104126
database_logic.extensions = [type(ext).__name__ for ext in extensions]
105127

@@ -146,7 +168,7 @@ def run() -> None:
146168
import uvicorn
147169

148170
uvicorn.run(
149-
"stac_fastapi.opensearch.app:app",
171+
"stac_fastapi.elasticsearch.app:app",
150172
host=settings.app_host,
151173
port=settings.app_port,
152174
log_level="info",

0 commit comments

Comments
 (0)