11from dataclasses import dataclass
22
3- from models_library .basic_types import VersionStr
43from models_library .products import ProductName
54from models_library .rest_pagination import (
65 DEFAULT_NUMBER_OF_ITEMS_PER_PAGE ,
76 PageLimitInt ,
87 PageMetaInfoLimitOffset ,
98 PageOffsetInt ,
109)
10+ from models_library .services_history import ServiceRelease
11+ from models_library .services_types import ServiceKey , ServiceVersion
1112from models_library .users import UserID
13+ from pytest_simcore .helpers .catalog_rpc_server import LatestServiceGet , ServiceGetV2
1214from servicelib .fastapi .app_state import SingletonInAppStateMixin
1315from servicelib .rabbitmq import RabbitMQRPCClient
1416from servicelib .rabbitmq .rpc_interfaces .catalog import services as catalog_rpc
1517
16- from ..models .schemas .solvers import Solver , SolverKeyId , SolverPort
17-
18- _FAKE : list [Solver ] = [
19- Solver .model_validate (Solver .model_json_schema ()["example" ]),
20- ]
21- _FAKE2 : list [SolverPort ] = [
22- SolverPort .model_validate (SolverPort .model_json_schema ()["example" ]),
23- ]
24- # from models_library.api_schemas_catalog.services import (
25- # LatestServiceGet,
26- # MyServiceGet,
27- # ServiceGetV2,
28- # ServiceUpdateV2,
29- # )
30-
31- assert catalog_rpc # nosec
32-
3318
3419@dataclass
3520class CatalogService (SingletonInAppStateMixin ):
@@ -43,81 +28,62 @@ async def list_latest_releases(
4328 user_id : UserID ,
4429 offset : PageOffsetInt = 0 ,
4530 limit : PageLimitInt = DEFAULT_NUMBER_OF_ITEMS_PER_PAGE ,
46- ) -> tuple [list [Solver ], PageMetaInfoLimitOffset ]:
47- assert product_name # nosec
48- assert user_id # nosec
31+ ) -> tuple [list [LatestServiceGet ], PageMetaInfoLimitOffset ]:
4932
50- data = _FAKE [offset : offset + limit ]
33+ page = await catalog_rpc .list_services_paginated (
34+ self ._client ,
35+ product_name = product_name ,
36+ user_id = user_id ,
37+ offset = offset ,
38+ limit = limit ,
39+ )
5140 meta = PageMetaInfoLimitOffset (
52- limit = limit , offset = offset , total = len (_FAKE ), count = len (data )
41+ limit = page .meta .limit ,
42+ offset = page .meta .offset ,
43+ total = page .meta .total ,
44+ count = page .meta .count ,
5345 )
54- return data , meta
46+ return page . data , meta
5547
56- async def list_solver_releases (
48+ async def list_release_history (
5749 self ,
5850 * ,
5951 product_name : ProductName ,
6052 user_id : UserID ,
61- solver_id : SolverKeyId ,
53+ service_key : ServiceKey ,
6254 offset : PageOffsetInt = 0 ,
6355 limit : PageLimitInt = DEFAULT_NUMBER_OF_ITEMS_PER_PAGE ,
64- ) -> tuple [list [Solver ], PageMetaInfoLimitOffset ]:
65- assert product_name # nosec
66- assert user_id # nosec
67-
68- data = [solver for solver in _FAKE if solver .id == solver_id ][
69- offset : offset + limit
70- ]
56+ ) -> tuple [list [ServiceRelease ], PageMetaInfoLimitOffset ]:
7157
58+ data = await catalog_rpc .get_my_service_history (
59+ self ._client ,
60+ product_name = product_name ,
61+ user_id = user_id ,
62+ service_key = service_key ,
63+ # TODO: offset=offset,
64+ # TODO: limit=limit,
65+ )
7266 meta = PageMetaInfoLimitOffset (
73- limit = limit , offset = offset , total = len (_FAKE ), count = len (data )
67+ limit = limit ,
68+ offset = offset ,
69+ total = len (data ),
70+ count = len (data ),
7471 )
7572 return data , meta
7673
77- async def get_solver (
74+ async def get (
7875 self ,
7976 * ,
8077 product_name : ProductName ,
8178 user_id : UserID ,
82- solver_id : SolverKeyId ,
83- solver_version : VersionStr ,
84- ) -> Solver | None :
85- assert product_name # nosec
86- assert user_id # nosec
87-
88- # service: ServiceGetV2 = await catalog_rpc.get_service(
89- # get_rabbitmq_rpc_client(app),
90- # product_name=product_name,
91- # user_id=user_id,
92- # service_key=solver_id,
93- # service_version=solver_version,
94- # )
95-
96- # solver = Solver(id=service.key, version=service.version, title=) ServiceGetV2)(service)
97-
98- return next (
99- (
100- solver
101- for solver in _FAKE
102- if solver .id == solver_id and solver .version == solver_version
103- ),
104- None ,
105- )
79+ service_key : ServiceKey ,
80+ service_version : ServiceVersion ,
81+ ) -> ServiceGetV2 :
10682
107- async def get_solver_ports (
108- self ,
109- * ,
110- product_name : ProductName ,
111- user_id : int ,
112- solver_id : SolverKeyId ,
113- solver_version : VersionStr ,
114- ) -> list [SolverPort ]:
115-
116- if await self .get_solver (
83+ return await catalog_rpc .get_service (
84+ self ._client ,
11785 product_name = product_name ,
11886 user_id = user_id ,
119- solver_id = solver_id ,
120- solver_version = solver_version ,
121- ):
122- return _FAKE2
123- return []
87+ service_key = service_key ,
88+ service_version = service_version ,
89+ )
0 commit comments