@@ -64,6 +64,7 @@ async def all_collections( # noqa: C901
6464 Collections which match the search criteria, returns all
6565 collections by default.
6666 """
67+ base_url = get_base_url (request )
6768
6869 # Parse request parameters
6970 base_args = {
@@ -73,7 +74,7 @@ async def all_collections( # noqa: C901
7374 "query" : orjson .loads (unquote_plus (query )) if query else query ,
7475 }
7576
76- clean = clean_search_args (
77+ clean_args = clean_search_args (
7778 base_args = base_args ,
7879 datetime = datetime ,
7980 fields = fields ,
@@ -82,53 +83,14 @@ async def all_collections( # noqa: C901
8283 filter_lang = filter_lang ,
8384 )
8485
85- # Do the request
86- try :
87- search_request = self .collections_get_request_model (** clean )
88- except ValidationError as e :
89- raise HTTPException (
90- status_code = 400 , detail = f"Invalid parameters provided { e } "
91- ) from e
92-
93- return await self ._collection_search_base (search_request , request = request )
94-
95- async def _collection_search_base ( # noqa: C901
96- self ,
97- search_request : APIRequest ,
98- request : Request ,
99- ) -> Collections :
100- """Cross catalog search (GET).
101-
102- Called with `GET /search`.
103-
104- Args:
105- search_request: search request parameters.
106-
107- Returns:
108- All collections which match the search criteria.
109- """
110- base_url = get_base_url (request )
111- search_request_json = json .dumps (
112- {
113- key : value
114- for key , value in search_request .__dict__ .items ()
115- if value is not None
116- }
117- )
118-
119- try :
120- async with request .app .state .get_connection (request , "r" ) as conn :
121- q , p = render (
122- """
123- SELECT * FROM collection_search(:req::text::jsonb);
124- """ ,
125- req = search_request_json ,
126- )
127- collections_result : Collections = await conn .fetchval (q , * p )
128- except InvalidDatetimeFormatError as e :
129- raise InvalidQueryParameter (
130- f"Datetime parameter { search_request .datetime } is invalid."
131- ) from e
86+ async with request .app .state .get_connection (request , "r" ) as conn :
87+ q , p = render (
88+ """
89+ SELECT * FROM collection_search(:req::text::jsonb);
90+ """ ,
91+ req = json .dumps (clean_args ),
92+ )
93+ collections_result : Collections = await conn .fetchval (q , * p )
13294
13395 next : Optional [str ] = None
13496 prev : Optional [str ] = None
0 commit comments