11"""Item crud client."""
22import json
33import logging
4- from datetime import datetime
4+ from datetime import datetime as datetime_type
55from typing import List , Optional , Type , Union
66from urllib .parse import urljoin
77
@@ -147,15 +147,16 @@ def get_item(self, item_id: str, collection_id: str, **kwargs) -> Item:
147147 )
148148 return self .item_serializer .db_to_stac (item ["_source" ], base_url )
149149
150- def _return_date (self , datetime ):
151- datetime = datetime .split ("/" )
152- if len (datetime ) == 1 :
153- datetime = datetime [0 ][0 :19 ] + "Z"
150+ @staticmethod
151+ def _return_date (interval_str ):
152+ intervals = interval_str .split ("/" )
153+ if len (intervals ) == 1 :
154+ datetime = intervals [0 ][0 :19 ] + "Z"
154155 return {"eq" : datetime }
155156 else :
156- start_date = datetime [0 ]
157- end_date = datetime [1 ]
158- if ".." not in datetime :
157+ start_date = intervals [0 ]
158+ end_date = intervals [1 ]
159+ if ".." not in intervals :
159160 start_date = start_date [0 :19 ] + "Z"
160161 end_date = end_date [0 :19 ] + "Z"
161162 elif start_date != ".." :
@@ -175,7 +176,7 @@ def get_search(
175176 collections : Optional [List [str ]] = None ,
176177 ids : Optional [List [str ]] = None ,
177178 bbox : Optional [List [NumType ]] = None ,
178- datetime : Optional [Union [str , datetime ]] = None ,
179+ datetime : Optional [Union [str , datetime_type ]] = None ,
179180 limit : Optional [int ] = 10 ,
180181 query : Optional [str ] = None ,
181182 token : Optional [str ] = None ,
@@ -238,7 +239,16 @@ def post_search(
238239 ) -> ItemCollection :
239240 """POST search catalog."""
240241 base_url = str (kwargs ["request" ].base_url )
241- search = Search (using = self .client , index = "stac_items" )
242+ search = (
243+ Search ()
244+ .using (self .client )
245+ .index ("stac_items" )
246+ .sort (
247+ {"properties.datetime" : {"order" : "desc" }},
248+ {"id" : {"order" : "desc" }},
249+ {"collection" : {"order" : "desc" }},
250+ )
251+ )
242252
243253 if search_request .query :
244254 if type (search_request .query ) == str :
0 commit comments