Skip to content

Commit dd58fbf

Browse files
feat: add ordering
1 parent 133458b commit dd58fbf

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

services/web/server/src/simcore_service_webserver/functions/_controller/_functions_rest.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
RegisteredSolverFunction,
1818
)
1919
from models_library.products import ProductName
20+
from models_library.rest_ordering import OrderBy
2021
from models_library.rest_pagination import Page
2122
from models_library.rest_pagination_utils import paginate_data
2223
from models_library.users import UserID
@@ -164,6 +165,7 @@ async def list_functions(request: web.Request) -> web.Response:
164165
product_name=req_ctx.product_name,
165166
pagination_limit=query_params.limit,
166167
pagination_offset=query_params.offset,
168+
order_by=OrderBy.model_construct(**query_params.order_by.model_dump()),
167169
)
168170

169171
chunk: list[RegisteredFunctionGet] = []

services/web/server/src/simcore_service_webserver/functions/_controller/_functions_rest_schemas.py

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,11 @@
1+
from models_library.basic_types import IDStr
12
from models_library.functions import FunctionID
3+
from models_library.rest_base import RequestParameters
4+
from models_library.rest_ordering import (
5+
OrderBy,
6+
OrderDirection,
7+
create_ordering_query_model_class,
8+
)
29
from models_library.rest_pagination import PageQueryParameters
310
from pydantic import BaseModel, ConfigDict
411

@@ -19,7 +26,19 @@ class _FunctionQueryParams(BaseModel):
1926
class FunctionGetQueryParams(_FunctionQueryParams): ...
2027

2128

22-
class FunctionsListQueryParams(PageQueryParameters, _FunctionQueryParams): ...
29+
_FunctionOrderQueryParams: type[RequestParameters] = create_ordering_query_model_class(
30+
ordering_fields={
31+
"name",
32+
"created_at",
33+
"modified_at",
34+
},
35+
default=OrderBy(field=IDStr("modified_at"), direction=OrderDirection.DESC),
36+
)
37+
38+
39+
class FunctionsListQueryParams(
40+
PageQueryParameters, _FunctionOrderQueryParams, _FunctionQueryParams
41+
): ...
2342

2443

2544
__all__: tuple[str, ...] = ("AuthenticatedRequestContext",)

0 commit comments

Comments
 (0)