Skip to content

Commit d34012e

Browse files
committed
test sort collections
1 parent 7ecd26f commit d34012e

File tree

2 files changed

+46
-6
lines changed
  • stac_fastapi
    • elasticsearch/stac_fastapi/elasticsearch
    • opensearch/stac_fastapi/opensearch

2 files changed

+46
-6
lines changed

stac_fastapi/elasticsearch/stac_fastapi/elasticsearch/app.py

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
from stac_fastapi.extensions.core import (
3838
AggregationExtension,
3939
CollectionSearchExtension,
40+
CollectionSearchFilterExtension,
4041
FilterExtension,
4142
FreeTextExtension,
4243
SortExtension,
@@ -45,6 +46,7 @@
4546
)
4647
from stac_fastapi.extensions.core.fields import FieldsConformanceClasses
4748
from stac_fastapi.extensions.core.filter import FilterConformanceClasses
49+
from stac_fastapi.extensions.core.free_text import FreeTextConformanceClasses
4850
from stac_fastapi.extensions.core.query import QueryConformanceClasses
4951
from stac_fastapi.extensions.core.sort import SortConformanceClasses
5052
from stac_fastapi.extensions.third_party import BulkTransactionExtension
@@ -70,9 +72,6 @@
7072
FilterConformanceClasses.ADVANCED_COMPARISON_OPERATORS
7173
)
7274

73-
# Adding collection search extension for compatibility with stac-auth-proxy
74-
# (https://github.com/developmentseed/stac-auth-proxy)
75-
# The extension is not fully implemented yet but is required for collection filtering support
7675
collection_search_extension = CollectionSearchExtension()
7776
collection_search_extension.conformance_classes.append(
7877
"https://api.stacspec.org/v1.0.0-rc.1/collection-search#filter"
@@ -122,6 +121,26 @@
122121

123122
extensions = [aggregation_extension] + search_extensions
124123

124+
# Create collection search extensions
125+
# Only sort extension is enabled for now
126+
collection_search_extensions = [
127+
QueryExtension(conformance_classes=[QueryConformanceClasses.COLLECTIONS]),
128+
SortExtension(conformance_classes=[SortConformanceClasses.COLLECTIONS]),
129+
FieldsExtension(conformance_classes=[FieldsConformanceClasses.COLLECTIONS]),
130+
CollectionSearchFilterExtension(
131+
conformance_classes=[FilterConformanceClasses.COLLECTIONS]
132+
),
133+
FreeTextExtension(conformance_classes=[FreeTextConformanceClasses.COLLECTIONS]),
134+
]
135+
136+
# Initialize collection search with its extensions
137+
collection_search_ext = CollectionSearchExtension.from_extensions(
138+
collection_search_extensions
139+
)
140+
collections_get_request_model = collection_search_ext.GET
141+
142+
extensions.append(collection_search_ext)
143+
125144
database_logic.extensions = [type(ext).__name__ for ext in extensions]
126145

127146
post_request_model = create_post_request_model(search_extensions)
@@ -157,6 +176,7 @@
157176
"search_get_request_model": create_get_request_model(search_extensions),
158177
"search_post_request_model": post_request_model,
159178
"items_get_request_model": items_get_request_model,
179+
"collections_get_request_model": collections_get_request_model,
160180
"route_dependencies": get_route_dependencies(),
161181
}
162182

stac_fastapi/opensearch/stac_fastapi/opensearch/app.py

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
from stac_fastapi.extensions.core import (
3232
AggregationExtension,
3333
CollectionSearchExtension,
34+
CollectionSearchFilterExtension,
3435
FilterExtension,
3536
FreeTextExtension,
3637
SortExtension,
@@ -39,6 +40,7 @@
3940
)
4041
from stac_fastapi.extensions.core.fields import FieldsConformanceClasses
4142
from stac_fastapi.extensions.core.filter import FilterConformanceClasses
43+
from stac_fastapi.extensions.core.free_text import FreeTextConformanceClasses
4244
from stac_fastapi.extensions.core.query import QueryConformanceClasses
4345
from stac_fastapi.extensions.core.sort import SortConformanceClasses
4446
from stac_fastapi.extensions.third_party import BulkTransactionExtension
@@ -69,9 +71,6 @@
6971
FilterConformanceClasses.ADVANCED_COMPARISON_OPERATORS
7072
)
7173

72-
# Adding collection search extension for compatibility with stac-auth-proxy
73-
# (https://github.com/developmentseed/stac-auth-proxy)
74-
# The extension is not fully implemented yet but is required for collection filtering support
7574
collection_search_extension = CollectionSearchExtension()
7675
collection_search_extension.conformance_classes.append(
7776
"https://api.stacspec.org/v1.0.0-rc.1/collection-search#filter"
@@ -122,6 +121,26 @@
122121

123122
extensions = [aggregation_extension] + search_extensions
124123

124+
# Create collection search extensions
125+
# Only sort extension is enabled for now
126+
collection_search_extensions = [
127+
QueryExtension(conformance_classes=[QueryConformanceClasses.COLLECTIONS]),
128+
SortExtension(conformance_classes=[SortConformanceClasses.COLLECTIONS]),
129+
FieldsExtension(conformance_classes=[FieldsConformanceClasses.COLLECTIONS]),
130+
CollectionSearchFilterExtension(
131+
conformance_classes=[FilterConformanceClasses.COLLECTIONS]
132+
),
133+
FreeTextExtension(conformance_classes=[FreeTextConformanceClasses.COLLECTIONS]),
134+
]
135+
136+
# Initialize collection search with its extensions
137+
collection_search_ext = CollectionSearchExtension.from_extensions(
138+
collection_search_extensions
139+
)
140+
collections_get_request_model = collection_search_ext.GET
141+
142+
extensions.append(collection_search_ext)
143+
125144
database_logic.extensions = [type(ext).__name__ for ext in extensions]
126145

127146
post_request_model = create_post_request_model(search_extensions)
@@ -154,6 +173,7 @@
154173
post_request_model=post_request_model,
155174
landing_page_id=os.getenv("STAC_FASTAPI_LANDING_PAGE_ID", "stac-fastapi"),
156175
),
176+
"collections_get_request_model": collections_get_request_model,
157177
"search_get_request_model": create_get_request_model(search_extensions),
158178
"search_post_request_model": post_request_model,
159179
"items_get_request_model": items_get_request_model,

0 commit comments

Comments
 (0)