2020 create_post_request_model ,
2121 create_request_model ,
2222)
23- from stac_fastapi .api .openapi import update_openapi
2423from stac_fastapi .extensions .core import (
24+ CollectionSearchExtension ,
25+ CollectionSearchFilterExtension ,
2526 FieldsExtension ,
2627 FreeTextExtension ,
28+ ItemCollectionFilterExtension ,
2729 OffsetPaginationExtension ,
30+ SearchFilterExtension ,
2831 SortExtension ,
2932 TokenPaginationExtension ,
3033 TransactionExtension ,
3134)
32- from stac_fastapi .extensions .core .collection_search import CollectionSearchExtension
33- from stac_fastapi .extensions .core .collection_search . request import (
34- BaseCollectionSearchGetRequest ,
35- )
35+ from stac_fastapi .extensions .core .fields import FieldsConformanceClasses
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
3639from stac_fastapi .extensions .third_party import BulkTransactionExtension
3740from starlette .middleware import Middleware
3841
3942from stac_fastapi .pgstac .config import Settings
4043from stac_fastapi .pgstac .core import CoreCrudClient
4144from stac_fastapi .pgstac .db import close_db_connection , connect_to_db
4245from stac_fastapi .pgstac .extensions import QueryExtension
43- from stac_fastapi .pgstac .extensions .filter import (
44- CollectionSearchFilterExtension ,
45- FiltersClient ,
46- ItemCollectionFilterExtension ,
47- SearchFilterExtension ,
48- )
46+ from stac_fastapi .pgstac .extensions .filter import FiltersClient
4947from stac_fastapi .pgstac .transactions import BulkTransactionsClient , TransactionsClient
5048from stac_fastapi .pgstac .types .search import PgstacSearch
5149
7270
7371# collection_search extensions
7472cs_extensions_map = {
75- "query" : QueryExtension (
76- conformance_classes = [
77- "https://api.stacspec.org/v1.0.0-rc.1/collection-search#query"
78- ]
79- ),
80- "sort" : SortExtension (
81- conformance_classes = [
82- "https://api.stacspec.org/v1.0.0-rc.1/collection-search#sort"
83- ]
84- ),
85- "fields" : FieldsExtension (
86- conformance_classes = [
87- "https://api.stacspec.org/v1.0.0-rc.1/collection-search#fields"
88- ]
89- ),
73+ "query" : QueryExtension (conformance_classes = [QueryConformanceClasses .COLLECTIONS ]),
74+ "sort" : SortExtension (conformance_classes = [SortConformanceClasses .COLLECTIONS ]),
75+ "fields" : FieldsExtension (conformance_classes = [FieldsConformanceClasses .COLLECTIONS ]),
9076 "filter" : CollectionSearchFilterExtension (client = FiltersClient ()),
9177 "free_text" : FreeTextExtension (
92- conformance_classes = [
93- "https://api.stacspec.org/v1.0.0-rc.1/collection-search#free-text" ,
94- ],
78+ conformance_classes = [FreeTextConformanceClasses .COLLECTIONS ],
9579 ),
9680 "pagination" : OffsetPaginationExtension (),
9781}
9882
9983# item_collection extensions
10084itm_col_extensions_map = {
10185 "query" : QueryExtension (
102- conformance_classes = ["https://api.stacspec.org/v1.0.0/ogcapi-features#query" ],
86+ conformance_classes = [QueryConformanceClasses . ITEMS ],
10387 ),
10488 "sort" : SortExtension (
105- conformance_classes = ["https://api.stacspec.org/v1.0.0/ogcapi-features#sort" ],
106- ),
107- "fields" : FieldsExtension (
108- conformance_classes = ["https://api.stacspec.org/v1.0.0/ogcapi-features#fields" ],
89+ conformance_classes = [SortConformanceClasses .ITEMS ],
10990 ),
91+ "fields" : FieldsExtension (conformance_classes = [FieldsConformanceClasses .ITEMS ]),
11092 "filter" : ItemCollectionFilterExtension (client = FiltersClient ()),
11193 "pagination" : TokenPaginationExtension (),
11294}
160142# /collections model
161143collections_get_request_model = EmptyRequest
162144if "collection_search" in enabled_extensions :
163- mixins = []
164- mixing_conformances = [
165- "https://api.stacspec.org/v1.0.0-rc.1/collection-search" ,
166- "http://www.opengis.net/spec/ogcapi-common-2/1.0/conf/simple-query" ,
145+ cs_extensions = [
146+ extension
147+ for key , extension in cs_extensions_map . items ()
148+ if key in enabled_extensions
167149 ]
168- for key , extension in cs_extensions_map .items ():
169- if key not in enabled_extensions :
170- continue
171- mixins .append (extension .GET )
172- mixing_conformances .extend (extension .conformance_classes )
173-
174- collections_get_request_model = create_request_model (
175- model_name = "CollectionsGetRequest" ,
176- base_model = BaseCollectionSearchGetRequest ,
177- mixins = mixins ,
178- request_type = "GET" ,
179- )
180- collection_search_extension = CollectionSearchExtension (
181- GET = collections_get_request_model , conformance_classes = mixing_conformances
182- )
150+ collection_search_extension = CollectionSearchExtension .from_extensions (cs_extensions )
151+ collections_get_request_model = collection_search_extension .GET
183152 application_extensions .append (collection_search_extension )
184153
185154
@@ -191,17 +160,17 @@ async def lifespan(app: FastAPI):
191160 await close_db_connection (app )
192161
193162
194- fastapp = FastAPI (
195- openapi_url = settings .openapi_url ,
196- docs_url = settings .docs_url ,
197- redoc_url = None ,
198- root_path = settings .root_path ,
199- lifespan = lifespan ,
200- )
201-
202-
203163api = StacApi (
204- app = update_openapi (fastapp ),
164+ app = FastAPI (
165+ openapi_url = settings .openapi_url ,
166+ docs_url = settings .docs_url ,
167+ redoc_url = None ,
168+ root_path = settings .root_path ,
169+ title = settings .stac_fastapi_title ,
170+ version = settings .stac_fastapi_version ,
171+ description = settings .stac_fastapi_description ,
172+ lifespan = lifespan ,
173+ ),
205174 settings = settings ,
206175 extensions = application_extensions ,
207176 client = CoreCrudClient (pgstac_search_model = post_request_model ),
0 commit comments