Skip to content

Commit 386398a

Browse files
open api specs
1 parent 42476f3 commit 386398a

File tree

5 files changed

+21
-2
lines changed

5 files changed

+21
-2
lines changed

services/web/server/src/simcore_service_webserver/api/v0/openapi.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4540,7 +4540,7 @@ paths:
45404540
'403':
45414541
description: ProjectInvalidRightsError
45424542
'404':
4543-
description: UserDefaultWalletNotFoundError, ProjectNotFoundError
4543+
description: ProjectNotFoundError, UserDefaultWalletNotFoundError
45444544
'409':
45454545
description: ProjectTooManyProjectOpenedError
45464546
'422':

services/web/server/src/simcore_service_webserver/workspaces/_models.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import logging
2+
from typing import Annotated
23

34
from models_library.basic_types import IDStr
45
from models_library.rest_base import RequestParameters, StrictRequestParameters
@@ -11,8 +12,9 @@
1112
from models_library.rest_pagination import PageQueryParameters
1213
from models_library.trash import RemoveQueryParams
1314
from models_library.users import GroupID, UserID
15+
from models_library.utils.common_validators import empty_str_to_none_pre_validator
1416
from models_library.workspaces import WorkspaceID
15-
from pydantic import BaseModel, ConfigDict, Field
17+
from pydantic import BaseModel, BeforeValidator, ConfigDict, Field
1618
from servicelib.request_keys import RQT_USERID_KEY
1719

1820
from .._constants import RQ_PRODUCT_KEY
@@ -46,6 +48,14 @@ class WorkspacesFilters(Filters):
4648
default=False,
4749
description="Set to true to list trashed, false to list non-trashed (default), None to list all",
4850
)
51+
text: Annotated[
52+
str | None, BeforeValidator(empty_str_to_none_pre_validator)
53+
] = Field(
54+
default=None,
55+
description="Multi column full text search",
56+
max_length=100,
57+
examples=["My Workspace"],
58+
)
4959

5060

5161
class WorkspacesListQueryParams(

services/web/server/src/simcore_service_webserver/workspaces/_workspaces_api.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ async def list_workspaces(
9191
user_id: UserID,
9292
product_name: ProductName,
9393
filter_trashed: bool | None,
94+
filter_by_text: str | None,
9495
offset: NonNegativeInt,
9596
limit: int,
9697
order_by: OrderBy,
@@ -100,6 +101,7 @@ async def list_workspaces(
100101
user_id=user_id,
101102
product_name=product_name,
102103
filter_trashed=filter_trashed,
104+
filter_by_text=filter_by_text,
103105
offset=offset,
104106
limit=limit,
105107
order_by=order_by,

services/web/server/src/simcore_service_webserver/workspaces/_workspaces_db.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@ async def list_workspaces_for_user(
114114
user_id: UserID,
115115
product_name: ProductName,
116116
filter_trashed: bool | None,
117+
filter_by_text: str | None,
117118
offset: NonNegativeInt,
118119
limit: NonNegativeInt,
119120
order_by: OrderBy,
@@ -140,6 +141,11 @@ async def list_workspaces_for_user(
140141
if filter_trashed
141142
else workspaces.c.trashed.is_(None)
142143
)
144+
if filter_by_text is not None:
145+
base_query = base_query.where(
146+
(workspaces.c.name.ilike(f"%{filter_by_text}%"))
147+
| (workspaces.c.description.ilike(f"%{filter_by_text}%"))
148+
)
143149

144150
# Select total count from base_query
145151
subquery = base_query.subquery()

services/web/server/src/simcore_service_webserver/workspaces/_workspaces_handlers.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ async def list_workspaces(request: web.Request):
7777
user_id=req_ctx.user_id,
7878
product_name=req_ctx.product_name,
7979
filter_trashed=query_params.filters.trashed,
80+
filter_by_text=query_params.filters.text,
8081
offset=query_params.offset,
8182
limit=query_params.limit,
8283
order_by=OrderBy.model_construct(**query_params.order_by.model_dump()),

0 commit comments

Comments
 (0)