Skip to content

Commit 8d3f997

Browse files
committed
connected trash in folders
1 parent 3422bab commit 8d3f997

File tree

5 files changed

+30
-1
lines changed

5 files changed

+30
-1
lines changed

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8509,6 +8509,10 @@ components:
85098509
title: Modifiedat
85108510
type: string
85118511
format: date-time
8512+
trashedAt:
8513+
title: Trashedat
8514+
type: string
8515+
format: date-time
85128516
owner:
85138517
title: Owner
85148518
exclusiveMinimum: true

services/web/server/src/simcore_service_webserver/folders/_folders_api.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,7 @@ async def list_folders(
148148
product_name: ProductName,
149149
folder_id: FolderID | None,
150150
workspace_id: WorkspaceID | None,
151+
trashed: bool | None,
151152
offset: NonNegativeInt,
152153
limit: int,
153154
order_by: OrderBy,
@@ -182,6 +183,7 @@ async def list_folders(
182183
user_id=user_id if workspace_is_private else None,
183184
workspace_id=workspace_id,
184185
product_name=product_name,
186+
trashed=trashed,
185187
offset=offset,
186188
limit=limit,
187189
order_by=order_by,

services/web/server/src/simcore_service_webserver/folders/_folders_db.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ async def list_(
8181
user_id: UserID | None,
8282
workspace_id: WorkspaceID | None,
8383
product_name: ProductName,
84+
trashed: bool | None,
8485
offset: NonNegativeInt,
8586
limit: int,
8687
order_by: OrderBy,
@@ -107,6 +108,13 @@ async def list_(
107108
assert workspace_id # nosec
108109
base_query = base_query.where(folders_v2.c.workspace_id == workspace_id)
109110

111+
if trashed is not None:
112+
base_query = base_query.where(
113+
folders_v2.c.trashed_at.is_not(None)
114+
if trashed
115+
else folders_v2.c.trashed_at.is_(None)
116+
)
117+
110118
# Select total count from base_query
111119
subquery = base_query.subquery()
112120
count_query = select(func.count()).select_from(subquery)

services/web/server/src/simcore_service_webserver/folders/_folders_handlers.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
from . import _folders_api
2828
from ._exceptions_handling import handle_plugin_requests_exceptions
2929
from ._models import (
30+
FolderFilters,
3031
FolderListWithJsonStrQueryParams,
3132
FoldersPathParams,
3233
FoldersRequestContext,
@@ -68,12 +69,16 @@ async def list_folders(request: web.Request):
6869
FolderListWithJsonStrQueryParams, request
6970
)
7071

72+
if not query_params.filters:
73+
query_params.filters = FolderFilters()
74+
7175
folders: FolderGetPage = await _folders_api.list_folders(
7276
app=request.app,
7377
user_id=req_ctx.user_id,
7478
product_name=req_ctx.product_name,
7579
folder_id=query_params.folder_id,
7680
workspace_id=query_params.workspace_id,
81+
trashed=query_params.filters.trashed,
7782
offset=query_params.offset,
7883
limit=query_params.limit,
7984
order_by=parse_obj_as(OrderBy, query_params.order_by),

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

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
from models_library.basic_types import IDStr
44
from models_library.folders import FolderID
5+
from models_library.rest_filters import Filters, FiltersQueryParameters
56
from models_library.rest_ordering import OrderBy, OrderDirection
67
from models_library.rest_pagination import PageQueryParameters
78
from models_library.users import UserID
@@ -25,7 +26,16 @@ class FoldersPathParams(StrictRequestParams):
2526
folder_id: FolderID
2627

2728

28-
class FolderListWithJsonStrQueryParams(PageQueryParameters):
29+
class FolderFilters(Filters):
30+
trashed: bool | None = Field(
31+
default=False,
32+
description="Set to true to list trashed, false to list non-trashed (default), None to list all",
33+
)
34+
35+
36+
class FolderListWithJsonStrQueryParams(
37+
PageQueryParameters, FiltersQueryParameters[FolderFilters]
38+
):
2939
# pylint: disable=unsubscriptable-object
3040
order_by: Json[OrderBy] = Field(
3141
default=OrderBy(field=IDStr("modified"), direction=OrderDirection.DESC),

0 commit comments

Comments
 (0)