Skip to content

Commit 2b6ea63

Browse files
committed
✨ Refactor service dependency injection to use get_solver_service for improved clarity and consistency
1 parent 1451774 commit 2b6ea63

File tree

2 files changed

+38
-9
lines changed

2 files changed

+38
-9
lines changed

services/api-server/src/simcore_service_api_server/api/dependencies/services.py

Lines changed: 33 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
1-
""" Dependences with any other services (except webserver)
2-
3-
"""
41
from collections.abc import Callable
2+
from typing import Annotated
53

6-
from fastapi import HTTPException, Request, status
4+
from fastapi import Depends, HTTPException, Request, status
5+
from servicelib.rabbitmq import RabbitMQRPCClient
76

7+
from ..._service_solvers import SolverService
8+
from ...services_rpc.catalog import CatalogService
9+
from ...services_rpc.wb_api_server import WbApiRpcClient
810
from ...utils.client_base import BaseServiceClientApi
11+
from .rabbitmq import get_rabbitmq_rpc_client
12+
from .webserver_rpc import get_wb_api_rpc_client
913

1014

1115
def get_api_client(client_type: type[BaseServiceClientApi]) -> Callable:
@@ -32,3 +36,28 @@ def _get_client_from_app(request: Request) -> BaseServiceClientApi:
3236
return client_obj
3337

3438
return _get_client_from_app
39+
40+
41+
def get_catalog_service(
42+
rpc_client: Annotated[RabbitMQRPCClient, Depends(get_rabbitmq_rpc_client)],
43+
):
44+
"""
45+
"Assembles" the CatalogService layer to the RabbitMQ client
46+
in the context of the rest controller (i.e. api/dependencies)
47+
"""
48+
return CatalogService(client=rpc_client)
49+
50+
51+
def get_solver_service(
52+
catalog_service: Annotated[CatalogService, Depends(get_catalog_service)],
53+
webserver_client: Annotated[WbApiRpcClient, Depends(get_wb_api_rpc_client)],
54+
) -> SolverService:
55+
"""
56+
"Assembles" the SolverService layer to the underlying service and client interfaces
57+
in the context of the rest controller (i.e. api/dependencies)
58+
"""
59+
60+
return SolverService(
61+
catalog_service=catalog_service,
62+
webserver_client=webserver_client,
63+
)

services/api-server/src/simcore_service_api_server/api/routes/solvers_jobs_getters.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@
5656
from ..dependencies.authentication import get_current_user_id, get_product_name
5757
from ..dependencies.database import get_db_asyncpg_engine
5858
from ..dependencies.rabbitmq import get_log_check_timeout, get_log_distributor
59-
from ..dependencies.services import get_api_client
59+
from ..dependencies.services import get_api_client, get_solver_service
6060
from ..dependencies.webserver_http import AuthSession, get_webserver_session
6161
from ._common import API_SERVER_DEV_FEATURES_ENABLED
6262
from ._constants import (
@@ -132,7 +132,7 @@
132132
async def list_all_solvers_jobs(
133133
user_id: Annotated[PositiveInt, Depends(get_current_user_id)],
134134
page_params: Annotated[PaginationParams, Depends()],
135-
solver_service: Annotated[SolverService, Depends(SolverService)],
135+
solver_service: Annotated[SolverService, Depends(get_solver_service)],
136136
url_for: Annotated[Callable, Depends(get_reverse_url_mapper)],
137137
product_name: Annotated[str, Depends(get_product_name)],
138138
):
@@ -176,7 +176,7 @@ async def list_jobs(
176176
solver_key: SolverKeyId,
177177
version: VersionStr,
178178
user_id: Annotated[PositiveInt, Depends(get_current_user_id)],
179-
solver_service: Annotated[SolverService, Depends(SolverService)],
179+
solver_service: Annotated[SolverService, Depends(get_solver_service)],
180180
webserver_api: Annotated[AuthSession, Depends(get_webserver_session)],
181181
url_for: Annotated[Callable, Depends(get_reverse_url_mapper)],
182182
product_name: Annotated[str, Depends(get_product_name)],
@@ -222,7 +222,7 @@ async def get_jobs_page(
222222
version: VersionStr,
223223
user_id: Annotated[PositiveInt, Depends(get_current_user_id)],
224224
page_params: Annotated[PaginationParams, Depends()],
225-
solver_service: Annotated[SolverService, Depends(SolverService)],
225+
solver_service: Annotated[SolverService, Depends(get_solver_service)],
226226
webserver_api: Annotated[AuthSession, Depends(get_webserver_session)],
227227
url_for: Annotated[Callable, Depends(get_reverse_url_mapper)],
228228
product_name: Annotated[str, Depends(get_product_name)],
@@ -266,7 +266,7 @@ async def get_job(
266266
user_id: Annotated[PositiveInt, Depends(get_current_user_id)],
267267
product_name: Annotated[str, Depends(get_product_name)],
268268
webserver_api: Annotated[AuthSession, Depends(get_webserver_session)],
269-
solver_service: Annotated[SolverService, Depends(SolverService)],
269+
solver_service: Annotated[SolverService, Depends(get_solver_service)],
270270
url_for: Annotated[Callable, Depends(get_reverse_url_mapper)],
271271
):
272272
"""Gets job of a given solver"""

0 commit comments

Comments
 (0)