Skip to content

♻️ webserver: Refactor projects Domain to Align with Standardized Module Structure #7409

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 39 commits into from
Mar 24, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
dcfcad2
rest handlers
pcrespov Mar 21, 2025
bf971de
moves to controlers folder
pcrespov Mar 21, 2025
d925f20
renames rest
pcrespov Mar 21, 2025
338250c
service modules
pcrespov Mar 21, 2025
a2db406
rest exceptions
pcrespov Mar 21, 2025
ecb0c3b
controllers names
pcrespov Mar 21, 2025
b8ee42b
repo
pcrespov Mar 21, 2025
bf01648
rest
pcrespov Mar 21, 2025
ca4470b
repo
pcrespov Mar 21, 2025
341d382
schemas
pcrespov Mar 21, 2025
3e287d0
drop common
pcrespov Mar 21, 2025
e155dab
db, db_utils and projects_db -> projects_repository_*
pcrespov Mar 21, 2025
1185af4
projects service
pcrespov Mar 21, 2025
d7ca749
fix mypy
pcrespov Mar 21, 2025
142a80e
imports
pcrespov Mar 21, 2025
3803a65
imports
pcrespov Mar 21, 2025
a71759f
imports
pcrespov Mar 21, 2025
c613c48
imports
pcrespov Mar 21, 2025
1cba176
dv2
pcrespov Mar 21, 2025
fee6d6d
import and groups_repo
pcrespov Mar 21, 2025
6b06e26
import
pcrespov Mar 21, 2025
9c0d066
security service
pcrespov Mar 21, 2025
4fd26e4
security service
pcrespov Mar 21, 2025
3a2937e
mocks
pcrespov Mar 21, 2025
b59f899
fixes mocks
pcrespov Mar 21, 2025
7d7f885
fixes mocks
pcrespov Mar 21, 2025
37aca04
fixes mocks
pcrespov Mar 21, 2025
3ed28de
fixes mocks
pcrespov Mar 21, 2025
07707a4
fix sonar
pcrespov Mar 21, 2025
d27f5cc
fix mocks
pcrespov Mar 21, 2025
cd32f5b
cleanup
pcrespov Mar 21, 2025
94b8f91
fixes imports
pcrespov Mar 21, 2025
25b6cf0
fixes pylint
pcrespov Mar 22, 2025
986baeb
@sanderegg review: all naming
pcrespov Mar 24, 2025
501db98
@sanderegg review: comments
pcrespov Mar 24, 2025
7df5ce7
rest schemas
pcrespov Mar 24, 2025
014756d
minor
pcrespov Mar 24, 2025
894573c
@GitHK review:doc
pcrespov Mar 24, 2025
4e4e780
improved
pcrespov Mar 24, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 16 additions & 23 deletions api/specs/web-server/_projects.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
""" Helper script to automatically generate OAS
"""Helper script to automatically generate OAS

This OAS are the source of truth
"""
Expand Down Expand Up @@ -31,13 +31,15 @@
from models_library.rest_pagination import Page
from pydantic import BaseModel
from simcore_service_webserver._meta import API_VTAG
from simcore_service_webserver.projects._common.exceptions_handlers import (
from simcore_service_webserver.projects._controller._rest_exceptions import (
_TO_HTTP_ERROR_MAP,
)
from simcore_service_webserver.projects._common.models import ProjectPathParams
from simcore_service_webserver.projects._crud_handlers import ProjectCreateQueryParams
from simcore_service_webserver.projects._crud_handlers_models import (
from simcore_service_webserver.projects._controller._rest_schemas import (
ProjectPathParams,
)
from simcore_service_webserver.projects._controller.projects_rest_schemas import (
ProjectActiveQueryParams,
ProjectCreateQueryParams,
ProjectsListQueryParams,
ProjectsSearchQueryParams,
)
Expand Down Expand Up @@ -83,8 +85,7 @@ async def create_project(
_h: Annotated[_ProjectCreateHeaderParams, Depends()],
_query: Annotated[ProjectCreateQueryParams, Depends()],
_body: ProjectCreateNew | ProjectCopyOverride,
):
...
): ...


@router.get(
Expand All @@ -93,8 +94,7 @@ async def create_project(
)
async def list_projects(
_query: Annotated[as_query(ProjectsListQueryParams), Depends()],
):
...
): ...


@router.get(
Expand All @@ -103,8 +103,7 @@ async def list_projects(
)
async def get_active_project(
_query: Annotated[ProjectActiveQueryParams, Depends()],
):
...
): ...


@router.get(
Expand All @@ -113,8 +112,7 @@ async def get_active_project(
)
async def get_project(
_path: Annotated[ProjectPathParams, Depends()],
):
...
): ...


@router.patch(
Expand All @@ -125,8 +123,7 @@ async def get_project(
async def patch_project(
_path: Annotated[ProjectPathParams, Depends()],
_body: ProjectPatch,
):
...
): ...


@router.delete(
Expand All @@ -135,8 +132,7 @@ async def patch_project(
)
async def delete_project(
_path: Annotated[ProjectPathParams, Depends()],
):
...
): ...


@router.post(
Expand All @@ -146,8 +142,7 @@ async def delete_project(
)
async def clone_project(
_path: Annotated[ProjectPathParams, Depends()],
):
...
): ...


@router.get(
Expand All @@ -156,8 +151,7 @@ async def clone_project(
)
async def list_projects_full_search(
_query: Annotated[as_query(ProjectsSearchQueryParams), Depends()],
):
...
): ...


@router.get(
Expand All @@ -167,5 +161,4 @@ async def list_projects_full_search(
)
async def get_project_inactivity(
_path: Annotated[ProjectPathParams, Depends()],
):
...
): ...
19 changes: 7 additions & 12 deletions api/specs/web-server/_projects_comments.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
""" Helper script to automatically generate OAS
"""Helper script to automatically generate OAS

This OAS are the source of truth
"""
Expand All @@ -17,7 +17,7 @@
from models_library.projects_comments import CommentID, ProjectsCommentsAPI
from pydantic import NonNegativeInt
from simcore_service_webserver._meta import API_VTAG
from simcore_service_webserver.projects._comments_handlers import (
from simcore_service_webserver.projects._controller.comments_rest import (
_ProjectCommentsBodyParams,
_ProjectCommentsPathParams,
_ProjectCommentsWithCommentPathParams,
Expand Down Expand Up @@ -45,8 +45,7 @@
)
async def create_project_comment(
project_uuid: ProjectID, body: _ProjectCommentsBodyParams
):
...
): ...


assert_handler_signature_against_model(
Expand All @@ -61,8 +60,7 @@ async def create_project_comment(
)
async def list_project_comments(
project_uuid: ProjectID, limit: int = 20, offset: NonNegativeInt = 0
):
...
): ...


assert_handler_signature_against_model(
Expand All @@ -79,8 +77,7 @@ async def update_project_comment(
project_uuid: ProjectID,
comment_id: CommentID,
body: _ProjectCommentsBodyParams,
):
...
): ...


assert_handler_signature_against_model(
Expand All @@ -93,8 +90,7 @@ async def update_project_comment(
description="Delete a specific comment associated with a project.",
status_code=204,
)
async def delete_project_comment(project_uuid: ProjectID, comment_id: CommentID):
...
async def delete_project_comment(project_uuid: ProjectID, comment_id: CommentID): ...


assert_handler_signature_against_model(
Expand All @@ -107,8 +103,7 @@ async def delete_project_comment(project_uuid: ProjectID, comment_id: CommentID)
response_model=Envelope[ProjectsCommentsAPI],
description="Retrieve a specific comment by its ID within a project.",
)
async def get_project_comment(project_uuid: ProjectID, comment_id: CommentID):
...
async def get_project_comment(project_uuid: ProjectID, comment_id: CommentID): ...


assert_handler_signature_against_model(
Expand Down
7 changes: 3 additions & 4 deletions api/specs/web-server/_projects_folders.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
""" Helper script to automatically generate OAS
"""Helper script to automatically generate OAS

This OAS are the source of truth
"""
Expand All @@ -13,7 +13,7 @@

from fastapi import APIRouter, Depends, status
from simcore_service_webserver._meta import API_VTAG
from simcore_service_webserver.projects._folders_handlers import (
from simcore_service_webserver.projects._controller.folders_rest import (
_ProjectsFoldersPathParams,
)

Expand All @@ -30,5 +30,4 @@
)
async def replace_project_folder(
_path: Annotated[_ProjectsFoldersPathParams, Depends()],
):
...
): ...
22 changes: 11 additions & 11 deletions api/specs/web-server/_projects_groups.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,14 @@
from fastapi import APIRouter, Depends, status
from models_library.generics import Envelope
from simcore_service_webserver._meta import API_VTAG
from simcore_service_webserver.projects._common.models import ProjectPathParams
from simcore_service_webserver.projects._groups_api import ProjectGroupGet
from simcore_service_webserver.projects._groups_handlers import (
from simcore_service_webserver.projects._controller._rest_schemas import (
ProjectPathParams,
)
from simcore_service_webserver.projects._controller.groups_rest import (
_ProjectsGroupsBodyParams,
_ProjectsGroupsPathParams,
)
from simcore_service_webserver.projects._groups_service import ProjectGroupGet

router = APIRouter(
prefix=f"/{API_VTAG}",
Expand All @@ -30,16 +32,14 @@
async def create_project_group(
_path: Annotated[_ProjectsGroupsPathParams, Depends()],
_body: _ProjectsGroupsBodyParams,
):
...
): ...


@router.get(
"/projects/{project_id}/groups",
response_model=Envelope[list[ProjectGroupGet]],
)
async def list_project_groups(_path: Annotated[ProjectPathParams, Depends()]):
...
async def list_project_groups(_path: Annotated[ProjectPathParams, Depends()]): ...


@router.put(
Expand All @@ -49,13 +49,13 @@ async def list_project_groups(_path: Annotated[ProjectPathParams, Depends()]):
async def replace_project_group(
_path: Annotated[_ProjectsGroupsPathParams, Depends()],
_body: _ProjectsGroupsBodyParams,
):
...
): ...


@router.delete(
"/projects/{project_id}/groups/{group_id}",
status_code=status.HTTP_204_NO_CONTENT,
)
async def delete_project_group(_path: Annotated[_ProjectsGroupsPathParams, Depends()]):
...
async def delete_project_group(
_path: Annotated[_ProjectsGroupsPathParams, Depends()],
): ...
12 changes: 6 additions & 6 deletions api/specs/web-server/_projects_metadata.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
""" Helper script to automatically generate OAS
"""Helper script to automatically generate OAS

This OAS are the source of truth
"""
Expand All @@ -18,7 +18,9 @@
)
from models_library.generics import Envelope
from simcore_service_webserver._meta import API_VTAG
from simcore_service_webserver.projects._metadata_handlers import ProjectPathParams
from simcore_service_webserver.projects._controller.metadata_rest import (
ProjectPathParams,
)

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

Expand All @@ -33,8 +35,7 @@
response_model=Envelope[ProjectMetadataGet],
status_code=status.HTTP_200_OK,
)
async def get_project_metadata(_params: Annotated[ProjectPathParams, Depends()]):
...
async def get_project_metadata(_params: Annotated[ProjectPathParams, Depends()]): ...


@router.patch(
Expand All @@ -44,5 +45,4 @@ async def get_project_metadata(_params: Annotated[ProjectPathParams, Depends()])
)
async def update_project_metadata(
_params: Annotated[ProjectPathParams, Depends()], _body: ProjectMetadataUpdate
):
...
): ...
6 changes: 4 additions & 2 deletions api/specs/web-server/_projects_nodes.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,14 @@
from models_library.projects import ProjectID
from models_library.projects_nodes_io import NodeID
from simcore_service_webserver._meta import API_VTAG
from simcore_service_webserver.projects._crud_handlers import ProjectPathParams
from simcore_service_webserver.projects._nodes_handlers import (
from simcore_service_webserver.projects._controller.nodes_rest import (
NodePathParams,
_ProjectGroupAccess,
_ProjectNodePreview,
)
from simcore_service_webserver.projects._controller.projects_rest import (
ProjectPathParams,
)

router = APIRouter(
prefix=f"/{API_VTAG}",
Expand Down
12 changes: 5 additions & 7 deletions api/specs/web-server/_projects_nodes_pricing_unit.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
""" Helper script to automatically generate OAS
"""Helper script to automatically generate OAS

This OAS are the source of truth
"""
Expand All @@ -17,10 +17,10 @@
from models_library.projects_nodes_io import NodeID
from models_library.resource_tracker import PricingPlanId, PricingUnitId
from simcore_service_webserver._meta import API_VTAG
from simcore_service_webserver.projects._nodes_handlers import NodePathParams
from simcore_service_webserver.projects._projects_nodes_pricing_unit_handlers import (
from simcore_service_webserver.projects._controller.nodes_pricing_unit_rest import (
_ProjectNodePricingUnitPathParams,
)
from simcore_service_webserver.projects._controller.nodes_rest import NodePathParams

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


assert_handler_signature_against_model(get_project_node_pricing_unit, NodePathParams)
Expand All @@ -52,8 +51,7 @@ async def connect_pricing_unit_to_project_node(
node_id: NodeID,
pricing_plan_id: PricingPlanId,
pricing_unit_id: PricingUnitId,
):
...
): ...


assert_handler_signature_against_model(
Expand Down
2 changes: 1 addition & 1 deletion api/specs/web-server/_projects_ports.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
from models_library.projects import ProjectID
from models_library.projects_nodes import NodeID
from simcore_service_webserver._meta import API_VTAG
from simcore_service_webserver.projects._ports_handlers import (
from simcore_service_webserver.projects._controller.ports_rest import (
ProjectInputGet,
ProjectInputUpdate,
ProjectMetadataPortGet,
Expand Down
11 changes: 4 additions & 7 deletions api/specs/web-server/_projects_states.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
from servicelib.aiohttp import status
from simcore_service_webserver._meta import API_VTAG
from simcore_service_webserver.director_v2.exceptions import DirectorServiceError
from simcore_service_webserver.projects._states_handlers import (
from simcore_service_webserver.projects._controller.projects_states_rest import (
ProjectPathParams,
_OpenProjectQuery,
)
Expand Down Expand Up @@ -70,20 +70,17 @@ def open_project(
client_session_id: Annotated[str, Body(...)],
_path_params: Annotated[ProjectPathParams, Depends()],
_query_params: Annotated[_OpenProjectQuery, Depends()],
):
...
): ...


@router.post("/projects/{project_id}:close", status_code=status.HTTP_204_NO_CONTENT)
def close_project(
_path_params: Annotated[ProjectPathParams, Depends()],
client_session_id: Annotated[str, Body(...)],
):
...
): ...


@router.get("/projects/{project_id}/state", response_model=Envelope[ProjectState])
def get_project_state(
_path_params: Annotated[ProjectPathParams, Depends()],
):
...
): ...
Loading
Loading