Skip to content

Commit 38ae3c0

Browse files
authored
♻️ webserver: Refactor projects Domain to Align with Standardized Module Structure (#7409)
1 parent abe7652 commit 38ae3c0

File tree

116 files changed

+1267
-848
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

116 files changed

+1267
-848
lines changed

api/specs/web-server/_projects.py

+16-23
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
""" Helper script to automatically generate OAS
1+
"""Helper script to automatically generate OAS
22
33
This OAS are the source of truth
44
"""
@@ -31,13 +31,15 @@
3131
from models_library.rest_pagination import Page
3232
from pydantic import BaseModel
3333
from simcore_service_webserver._meta import API_VTAG
34-
from simcore_service_webserver.projects._common.exceptions_handlers import (
34+
from simcore_service_webserver.projects._controller._rest_exceptions import (
3535
_TO_HTTP_ERROR_MAP,
3636
)
37-
from simcore_service_webserver.projects._common.models import ProjectPathParams
38-
from simcore_service_webserver.projects._crud_handlers import ProjectCreateQueryParams
39-
from simcore_service_webserver.projects._crud_handlers_models import (
37+
from simcore_service_webserver.projects._controller._rest_schemas import (
38+
ProjectPathParams,
39+
)
40+
from simcore_service_webserver.projects._controller.projects_rest_schemas import (
4041
ProjectActiveQueryParams,
42+
ProjectCreateQueryParams,
4143
ProjectsListQueryParams,
4244
ProjectsSearchQueryParams,
4345
)
@@ -83,8 +85,7 @@ async def create_project(
8385
_h: Annotated[_ProjectCreateHeaderParams, Depends()],
8486
_query: Annotated[ProjectCreateQueryParams, Depends()],
8587
_body: ProjectCreateNew | ProjectCopyOverride,
86-
):
87-
...
88+
): ...
8889

8990

9091
@router.get(
@@ -93,8 +94,7 @@ async def create_project(
9394
)
9495
async def list_projects(
9596
_query: Annotated[as_query(ProjectsListQueryParams), Depends()],
96-
):
97-
...
97+
): ...
9898

9999

100100
@router.get(
@@ -103,8 +103,7 @@ async def list_projects(
103103
)
104104
async def get_active_project(
105105
_query: Annotated[ProjectActiveQueryParams, Depends()],
106-
):
107-
...
106+
): ...
108107

109108

110109
@router.get(
@@ -113,8 +112,7 @@ async def get_active_project(
113112
)
114113
async def get_project(
115114
_path: Annotated[ProjectPathParams, Depends()],
116-
):
117-
...
115+
): ...
118116

119117

120118
@router.patch(
@@ -125,8 +123,7 @@ async def get_project(
125123
async def patch_project(
126124
_path: Annotated[ProjectPathParams, Depends()],
127125
_body: ProjectPatch,
128-
):
129-
...
126+
): ...
130127

131128

132129
@router.delete(
@@ -135,8 +132,7 @@ async def patch_project(
135132
)
136133
async def delete_project(
137134
_path: Annotated[ProjectPathParams, Depends()],
138-
):
139-
...
135+
): ...
140136

141137

142138
@router.post(
@@ -146,8 +142,7 @@ async def delete_project(
146142
)
147143
async def clone_project(
148144
_path: Annotated[ProjectPathParams, Depends()],
149-
):
150-
...
145+
): ...
151146

152147

153148
@router.get(
@@ -156,8 +151,7 @@ async def clone_project(
156151
)
157152
async def list_projects_full_search(
158153
_query: Annotated[as_query(ProjectsSearchQueryParams), Depends()],
159-
):
160-
...
154+
): ...
161155

162156

163157
@router.get(
@@ -167,5 +161,4 @@ async def list_projects_full_search(
167161
)
168162
async def get_project_inactivity(
169163
_path: Annotated[ProjectPathParams, Depends()],
170-
):
171-
...
164+
): ...

api/specs/web-server/_projects_comments.py

+7-12
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
""" Helper script to automatically generate OAS
1+
"""Helper script to automatically generate OAS
22
33
This OAS are the source of truth
44
"""
@@ -17,7 +17,7 @@
1717
from models_library.projects_comments import CommentID, ProjectsCommentsAPI
1818
from pydantic import NonNegativeInt
1919
from simcore_service_webserver._meta import API_VTAG
20-
from simcore_service_webserver.projects._comments_handlers import (
20+
from simcore_service_webserver.projects._controller.comments_rest import (
2121
_ProjectCommentsBodyParams,
2222
_ProjectCommentsPathParams,
2323
_ProjectCommentsWithCommentPathParams,
@@ -45,8 +45,7 @@
4545
)
4646
async def create_project_comment(
4747
project_uuid: ProjectID, body: _ProjectCommentsBodyParams
48-
):
49-
...
48+
): ...
5049

5150

5251
assert_handler_signature_against_model(
@@ -61,8 +60,7 @@ async def create_project_comment(
6160
)
6261
async def list_project_comments(
6362
project_uuid: ProjectID, limit: int = 20, offset: NonNegativeInt = 0
64-
):
65-
...
63+
): ...
6664

6765

6866
assert_handler_signature_against_model(
@@ -79,8 +77,7 @@ async def update_project_comment(
7977
project_uuid: ProjectID,
8078
comment_id: CommentID,
8179
body: _ProjectCommentsBodyParams,
82-
):
83-
...
80+
): ...
8481

8582

8683
assert_handler_signature_against_model(
@@ -93,8 +90,7 @@ async def update_project_comment(
9390
description="Delete a specific comment associated with a project.",
9491
status_code=204,
9592
)
96-
async def delete_project_comment(project_uuid: ProjectID, comment_id: CommentID):
97-
...
93+
async def delete_project_comment(project_uuid: ProjectID, comment_id: CommentID): ...
9894

9995

10096
assert_handler_signature_against_model(
@@ -107,8 +103,7 @@ async def delete_project_comment(project_uuid: ProjectID, comment_id: CommentID)
107103
response_model=Envelope[ProjectsCommentsAPI],
108104
description="Retrieve a specific comment by its ID within a project.",
109105
)
110-
async def get_project_comment(project_uuid: ProjectID, comment_id: CommentID):
111-
...
106+
async def get_project_comment(project_uuid: ProjectID, comment_id: CommentID): ...
112107

113108

114109
assert_handler_signature_against_model(

api/specs/web-server/_projects_folders.py

+3-4
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
""" Helper script to automatically generate OAS
1+
"""Helper script to automatically generate OAS
22
33
This OAS are the source of truth
44
"""
@@ -13,7 +13,7 @@
1313

1414
from fastapi import APIRouter, Depends, status
1515
from simcore_service_webserver._meta import API_VTAG
16-
from simcore_service_webserver.projects._folders_handlers import (
16+
from simcore_service_webserver.projects._controller.folders_rest import (
1717
_ProjectsFoldersPathParams,
1818
)
1919

@@ -30,5 +30,4 @@
3030
)
3131
async def replace_project_folder(
3232
_path: Annotated[_ProjectsFoldersPathParams, Depends()],
33-
):
34-
...
33+
): ...

api/specs/web-server/_projects_groups.py

+11-11
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,14 @@
99
from fastapi import APIRouter, Depends, status
1010
from models_library.generics import Envelope
1111
from simcore_service_webserver._meta import API_VTAG
12-
from simcore_service_webserver.projects._common.models import ProjectPathParams
13-
from simcore_service_webserver.projects._groups_api import ProjectGroupGet
14-
from simcore_service_webserver.projects._groups_handlers import (
12+
from simcore_service_webserver.projects._controller._rest_schemas import (
13+
ProjectPathParams,
14+
)
15+
from simcore_service_webserver.projects._controller.groups_rest import (
1516
_ProjectsGroupsBodyParams,
1617
_ProjectsGroupsPathParams,
1718
)
19+
from simcore_service_webserver.projects._groups_service import ProjectGroupGet
1820

1921
router = APIRouter(
2022
prefix=f"/{API_VTAG}",
@@ -30,16 +32,14 @@
3032
async def create_project_group(
3133
_path: Annotated[_ProjectsGroupsPathParams, Depends()],
3234
_body: _ProjectsGroupsBodyParams,
33-
):
34-
...
35+
): ...
3536

3637

3738
@router.get(
3839
"/projects/{project_id}/groups",
3940
response_model=Envelope[list[ProjectGroupGet]],
4041
)
41-
async def list_project_groups(_path: Annotated[ProjectPathParams, Depends()]):
42-
...
42+
async def list_project_groups(_path: Annotated[ProjectPathParams, Depends()]): ...
4343

4444

4545
@router.put(
@@ -49,13 +49,13 @@ async def list_project_groups(_path: Annotated[ProjectPathParams, Depends()]):
4949
async def replace_project_group(
5050
_path: Annotated[_ProjectsGroupsPathParams, Depends()],
5151
_body: _ProjectsGroupsBodyParams,
52-
):
53-
...
52+
): ...
5453

5554

5655
@router.delete(
5756
"/projects/{project_id}/groups/{group_id}",
5857
status_code=status.HTTP_204_NO_CONTENT,
5958
)
60-
async def delete_project_group(_path: Annotated[_ProjectsGroupsPathParams, Depends()]):
61-
...
59+
async def delete_project_group(
60+
_path: Annotated[_ProjectsGroupsPathParams, Depends()],
61+
): ...

api/specs/web-server/_projects_metadata.py

+6-6
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
""" Helper script to automatically generate OAS
1+
"""Helper script to automatically generate OAS
22
33
This OAS are the source of truth
44
"""
@@ -18,7 +18,9 @@
1818
)
1919
from models_library.generics import Envelope
2020
from simcore_service_webserver._meta import API_VTAG
21-
from simcore_service_webserver.projects._metadata_handlers import ProjectPathParams
21+
from simcore_service_webserver.projects._controller.metadata_rest import (
22+
ProjectPathParams,
23+
)
2224

2325
router = APIRouter(prefix=f"/{API_VTAG}", tags=["projects", "metadata"])
2426

@@ -33,8 +35,7 @@
3335
response_model=Envelope[ProjectMetadataGet],
3436
status_code=status.HTTP_200_OK,
3537
)
36-
async def get_project_metadata(_params: Annotated[ProjectPathParams, Depends()]):
37-
...
38+
async def get_project_metadata(_params: Annotated[ProjectPathParams, Depends()]): ...
3839

3940

4041
@router.patch(
@@ -44,5 +45,4 @@ async def get_project_metadata(_params: Annotated[ProjectPathParams, Depends()])
4445
)
4546
async def update_project_metadata(
4647
_params: Annotated[ProjectPathParams, Depends()], _body: ProjectMetadataUpdate
47-
):
48-
...
48+
): ...

api/specs/web-server/_projects_nodes.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,14 @@
2626
from models_library.projects import ProjectID
2727
from models_library.projects_nodes_io import NodeID
2828
from simcore_service_webserver._meta import API_VTAG
29-
from simcore_service_webserver.projects._crud_handlers import ProjectPathParams
30-
from simcore_service_webserver.projects._nodes_handlers import (
29+
from simcore_service_webserver.projects._controller.nodes_rest import (
3130
NodePathParams,
3231
_ProjectGroupAccess,
3332
_ProjectNodePreview,
3433
)
34+
from simcore_service_webserver.projects._controller.projects_rest import (
35+
ProjectPathParams,
36+
)
3537

3638
router = APIRouter(
3739
prefix=f"/{API_VTAG}",

api/specs/web-server/_projects_nodes_pricing_unit.py

+5-7
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
""" Helper script to automatically generate OAS
1+
"""Helper script to automatically generate OAS
22
33
This OAS are the source of truth
44
"""
@@ -17,10 +17,10 @@
1717
from models_library.projects_nodes_io import NodeID
1818
from models_library.resource_tracker import PricingPlanId, PricingUnitId
1919
from simcore_service_webserver._meta import API_VTAG
20-
from simcore_service_webserver.projects._nodes_handlers import NodePathParams
21-
from simcore_service_webserver.projects._projects_nodes_pricing_unit_handlers import (
20+
from simcore_service_webserver.projects._controller.nodes_pricing_unit_rest import (
2221
_ProjectNodePricingUnitPathParams,
2322
)
23+
from simcore_service_webserver.projects._controller.nodes_rest import NodePathParams
2424

2525
router = APIRouter(
2626
prefix=f"/{API_VTAG}",
@@ -35,8 +35,7 @@
3535
response_model=Envelope[PricingUnitGet | None],
3636
description="Get currently connected pricing unit to the project node.",
3737
)
38-
async def get_project_node_pricing_unit(project_id: ProjectID, node_id: NodeID):
39-
...
38+
async def get_project_node_pricing_unit(project_id: ProjectID, node_id: NodeID): ...
4039

4140

4241
assert_handler_signature_against_model(get_project_node_pricing_unit, NodePathParams)
@@ -52,8 +51,7 @@ async def connect_pricing_unit_to_project_node(
5251
node_id: NodeID,
5352
pricing_plan_id: PricingPlanId,
5453
pricing_unit_id: PricingUnitId,
55-
):
56-
...
54+
): ...
5755

5856

5957
assert_handler_signature_against_model(

api/specs/web-server/_projects_ports.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
from models_library.projects import ProjectID
1010
from models_library.projects_nodes import NodeID
1111
from simcore_service_webserver._meta import API_VTAG
12-
from simcore_service_webserver.projects._ports_handlers import (
12+
from simcore_service_webserver.projects._controller.ports_rest import (
1313
ProjectInputGet,
1414
ProjectInputUpdate,
1515
ProjectMetadataPortGet,

api/specs/web-server/_projects_states.py

+4-7
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
from servicelib.aiohttp import status
1515
from simcore_service_webserver._meta import API_VTAG
1616
from simcore_service_webserver.director_v2.exceptions import DirectorServiceError
17-
from simcore_service_webserver.projects._states_handlers import (
17+
from simcore_service_webserver.projects._controller.projects_states_rest import (
1818
ProjectPathParams,
1919
_OpenProjectQuery,
2020
)
@@ -70,20 +70,17 @@ def open_project(
7070
client_session_id: Annotated[str, Body(...)],
7171
_path_params: Annotated[ProjectPathParams, Depends()],
7272
_query_params: Annotated[_OpenProjectQuery, Depends()],
73-
):
74-
...
73+
): ...
7574

7675

7776
@router.post("/projects/{project_id}:close", status_code=status.HTTP_204_NO_CONTENT)
7877
def close_project(
7978
_path_params: Annotated[ProjectPathParams, Depends()],
8079
client_session_id: Annotated[str, Body(...)],
81-
):
82-
...
80+
): ...
8381

8482

8583
@router.get("/projects/{project_id}/state", response_model=Envelope[ProjectState])
8684
def get_project_state(
8785
_path_params: Annotated[ProjectPathParams, Depends()],
88-
):
89-
...
86+
): ...

0 commit comments

Comments
 (0)