@@ -261,6 +261,19 @@ def _datetime_filter_to_sql(self, interval: List[str], dt_name: str):
261261 logic .V (dt_name ) < logic .S (pg_funcs .cast (end , "timestamptz" )),
262262 )
263263
264+ def _sortby (self , sortby : Optional [str ]):
265+ sortby = sortby .strip ()
266+ if sortby is None :
267+ sortby = self .id_column
268+ if sortby .startswith ("-" ):
269+ sortby = sortby .replace ("-" , "" )
270+ sort_clause = logic .V (sortby ).desc ()
271+ else :
272+ sortby = sortby .replace ("+" , "" )
273+ sort_clause = logic .V (sortby ).asc ()
274+ if self .get_column (sortby ) is not None :
275+ return clauses .OrderBy (sort_clause )
276+
264277 def _features_query (
265278 self ,
266279 * ,
@@ -269,6 +282,7 @@ def _features_query(
269282 datetime_filter : Optional [List [str ]] = None ,
270283 properties_filter : Optional [List [Tuple [str , str ]]] = None ,
271284 cql_filter : Optional [AstType ] = None ,
285+ sortby : Optional [str ] = None ,
272286 properties : Optional [List [str ]] = None ,
273287 geom : str = None ,
274288 dt : str = None ,
@@ -288,6 +302,7 @@ def _features_query(
288302 geom = geom ,
289303 dt = dt ,
290304 )
305+ + self ._sortby (sortby )
291306 + clauses .Limit (limit or 10 )
292307 + clauses .Offset (offset or 0 )
293308 )
@@ -327,6 +342,7 @@ async def query(
327342 datetime_filter : Optional [List [str ]] = None ,
328343 properties_filter : Optional [List [Tuple [str , str ]]] = None ,
329344 cql_filter : Optional [AstType ] = None ,
345+ sortby : Optional [str ] = None ,
330346 properties : Optional [List [str ]] = None ,
331347 geom : str = None ,
332348 dt : str = None ,
@@ -370,6 +386,7 @@ async def query(
370386 datetime_filter = datetime_filter ,
371387 properties_filter = properties_filter ,
372388 cql_filter = cql_filter ,
389+ sortby = sortby ,
373390 properties = properties ,
374391 geom = geom ,
375392 dt = dt ,
0 commit comments