Skip to content

Commit db4a34e

Browse files
authored
♻️ Refactor webserver projects: rest exception handlers (#7229)
1 parent dbec189 commit db4a34e

21 files changed

+1029
-543
lines changed

api/specs/web-server/_projects.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,13 @@
2727
from models_library.generics import Envelope
2828
from models_library.projects import ProjectID
2929
from models_library.projects_nodes_io import NodeID
30+
from models_library.rest_error import EnvelopedError
3031
from models_library.rest_pagination import Page
3132
from pydantic import BaseModel
3233
from simcore_service_webserver._meta import API_VTAG
34+
from simcore_service_webserver.projects._common.exceptions_handlers import (
35+
_TO_HTTP_ERROR_MAP,
36+
)
3337
from simcore_service_webserver.projects._common.models import ProjectPathParams
3438
from simcore_service_webserver.projects._crud_handlers import ProjectCreateQueryParams
3539
from simcore_service_webserver.projects._crud_handlers_models import (
@@ -43,6 +47,9 @@
4347
tags=[
4448
"projects",
4549
],
50+
responses={
51+
i.status_code: {"model": EnvelopedError} for i in _TO_HTTP_ERROR_MAP.values()
52+
},
4653
)
4754

4855

api/specs/web-server/_trash.py

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,16 @@
88
from typing import Annotated
99

1010
from fastapi import APIRouter, Depends, status
11+
from models_library.rest_error import EnvelopedError
1112
from models_library.trash import RemoveQueryParams
1213
from simcore_service_webserver._meta import API_VTAG
1314
from simcore_service_webserver.folders._common.models import (
1415
FoldersPathParams,
1516
FolderTrashQueryParams,
1617
)
18+
from simcore_service_webserver.projects._common.exceptions_handlers import (
19+
_TO_HTTP_ERROR_MAP,
20+
)
1721
from simcore_service_webserver.projects._trash_rest import ProjectPathParams
1822
from simcore_service_webserver.workspaces._common.models import (
1923
WorkspacesPathParams,
@@ -23,6 +27,9 @@
2327
router = APIRouter(
2428
prefix=f"/{API_VTAG}",
2529
tags=["trash"],
30+
responses={
31+
i.status_code: {"model": EnvelopedError} for i in _TO_HTTP_ERROR_MAP.values()
32+
},
2633
)
2734

2835

@@ -42,11 +49,18 @@ def empty_trash():
4249
tags=_extra_tags,
4350
status_code=status.HTTP_204_NO_CONTENT,
4451
responses={
45-
status.HTTP_404_NOT_FOUND: {"description": "Not such a project"},
52+
status.HTTP_404_NOT_FOUND: {
53+
"description": "Not such a project",
54+
"model": EnvelopedError,
55+
},
4656
status.HTTP_409_CONFLICT: {
47-
"description": "Project is in use and cannot be trashed"
57+
"description": "Project is in use and cannot be trashed",
58+
"model": EnvelopedError,
59+
},
60+
status.HTTP_503_SERVICE_UNAVAILABLE: {
61+
"description": "Trash service error",
62+
"model": EnvelopedError,
4863
},
49-
status.HTTP_503_SERVICE_UNAVAILABLE: {"description": "Trash service error"},
5064
},
5165
)
5266
def trash_project(

0 commit comments

Comments
 (0)