Skip to content

Commit 99ed336

Browse files
committed
collections/{collection}/items fields extension implementation
1 parent e24498f commit 99ed336

File tree

3 files changed

+33
-5
lines changed
  • stac_fastapi
    • core/stac_fastapi/core
    • elasticsearch/stac_fastapi/elasticsearch
    • opensearch/stac_fastapi/opensearch

3 files changed

+33
-5
lines changed

stac_fastapi/core/stac_fastapi/core/core.py

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -352,9 +352,29 @@ async def item_collection(
352352
datetime_search=datetime_search,
353353
)
354354

355-
items = [
356-
self.item_serializer.db_to_stac(item, base_url=base_url) for item in items
357-
]
355+
fields = request.query_params.get("fields")
356+
if fields and self.extension_is_enabled("FieldsExtension"):
357+
fields = fields.split(",")
358+
includes, excludes = set(), set()
359+
for field in fields:
360+
if field[0] == "-":
361+
excludes.add(field[1:])
362+
else:
363+
includes.add(field[1:] if field[0] in "+ " else field)
364+
365+
items = [
366+
filter_fields(
367+
self.item_serializer.db_to_stac(item, base_url=base_url),
368+
includes,
369+
excludes,
370+
)
371+
for item in items
372+
]
373+
else:
374+
items = [
375+
self.item_serializer.db_to_stac(item, base_url=base_url)
376+
for item in items
377+
]
358378

359379
links = await PagingLinks(request=request, next=next_token).get_links()
360380

stac_fastapi/elasticsearch/stac_fastapi/elasticsearch/app.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
TokenPaginationExtension,
3939
TransactionExtension,
4040
)
41+
from stac_fastapi.extensions.core.fields import FieldsConformanceClasses
4142
from stac_fastapi.extensions.core.filter import FilterConformanceClasses
4243
from stac_fastapi.extensions.third_party import BulkTransactionExtension
4344
from stac_fastapi.sfeos_helpers.aggregation import EsAsyncBaseAggregationClient
@@ -77,8 +78,11 @@
7778
aggregation_extension.POST = EsAggregationExtensionPostRequest
7879
aggregation_extension.GET = EsAggregationExtensionGetRequest
7980

81+
fields_extension = FieldsExtension()
82+
fields_extension.conformance_classes.append(FieldsConformanceClasses.ITEMS)
83+
8084
search_extensions = [
81-
FieldsExtension(),
85+
fields_extension,
8286
QueryExtension(),
8387
SortExtension(),
8488
TokenPaginationExtension(),

stac_fastapi/opensearch/stac_fastapi/opensearch/app.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
TokenPaginationExtension,
3333
TransactionExtension,
3434
)
35+
from stac_fastapi.extensions.core.fields import FieldsConformanceClasses
3536
from stac_fastapi.extensions.core.filter import FilterConformanceClasses
3637
from stac_fastapi.extensions.third_party import BulkTransactionExtension
3738
from stac_fastapi.opensearch.config import OpensearchSettings
@@ -77,8 +78,11 @@
7778
aggregation_extension.POST = EsAggregationExtensionPostRequest
7879
aggregation_extension.GET = EsAggregationExtensionGetRequest
7980

81+
fields_extension = FieldsExtension()
82+
fields_extension.conformance_classes.append(FieldsConformanceClasses.ITEMS)
83+
8084
search_extensions = [
81-
FieldsExtension(),
85+
fields_extension,
8286
QueryExtension(),
8387
SortExtension(),
8488
TokenPaginationExtension(),

0 commit comments

Comments
 (0)