9292from servicelib .utils import fire_and_forget_task , limited_gather , logged_gather
9393from simcore_postgres_database .models .users import UserRole
9494from simcore_postgres_database .utils_projects_nodes import (
95- ProjectNodeCreate ,
9695 ProjectNodesNodeNotFoundError ,
9796)
9897from simcore_postgres_database .webserver_models import ProjectType
169168_logger = logging .getLogger (__name__ )
170169
171170
171+ async def _create_project_document_and_notify (
172+ app ,
173+ * ,
174+ project_id : ProjectID ,
175+ user_id : UserID ,
176+ client_session_id : ClientSessionID | None ,
177+ ):
178+ (
179+ project_document ,
180+ document_version ,
181+ ) = await create_project_document_and_increment_version (app , project_id )
182+
183+ user_primary_gid = await users_service .get_user_primary_group_id (app , user_id )
184+
185+ await notify_project_document_updated (
186+ app = app ,
187+ project_id = project_id ,
188+ user_primary_gid = user_primary_gid ,
189+ client_session_id = client_session_id ,
190+ version = document_version ,
191+ document = project_document ,
192+ )
193+
194+
172195async def patch_project_and_notify_users (
173196 app : web .Application ,
174197 * ,
@@ -937,26 +960,23 @@ async def add_project_node(
937960 default_resources = await catalog_service .get_service_resources (
938961 request .app , user_id , service_key , service_version
939962 )
940- db_legacy : ProjectDBAPI = ProjectDBAPI .get_from_app_context (request .app )
941- assert db_legacy # nosec
942- await db_legacy .add_project_node (
943- user_id ,
944- ProjectID (project ["uuid" ]),
945- ProjectNodeCreate (
946- node_id = node_uuid ,
947- required_resources = jsonable_encoder (default_resources ),
963+
964+ await _projects_nodes_repository .add (
965+ request .app ,
966+ project_id = ProjectID (project ["uuid" ]),
967+ node_id = node_uuid ,
968+ node = Node (
948969 key = service_key ,
949970 version = service_version ,
950971 label = service_key .split ("/" )[- 1 ],
972+ required_resources = jsonable_encoder (default_resources ),
951973 ),
952- Node .model_validate (
953- {
954- "key" : service_key ,
955- "version" : service_version ,
956- "label" : service_key .split ("/" )[- 1 ],
957- }
958- ),
959- product_name ,
974+ )
975+
976+ await _create_project_document_and_notify (
977+ request .app ,
978+ project_id = ProjectID (project ["uuid" ]),
979+ user_id = user_id ,
960980 client_session_id = client_session_id ,
961981 )
962982
@@ -1094,6 +1114,13 @@ async def delete_project_node(
10941114 node_id = NodeID (node_uuid ),
10951115 )
10961116
1117+ await _create_project_document_and_notify (
1118+ request .app ,
1119+ project_id = project_uuid ,
1120+ user_id = user_id ,
1121+ client_session_id = client_session_id ,
1122+ )
1123+
10971124 # also ensure the project is updated by director-v2 since services
10981125 product_name = products_web .get_product_name (request )
10991126 await director_v2_service .create_or_update_pipeline (
@@ -1103,24 +1130,6 @@ async def delete_project_node(
11031130 request .app , project_id = project_uuid
11041131 )
11051132
1106- (
1107- project_document ,
1108- document_version ,
1109- ) = await create_project_document_and_increment_version (request .app , project_uuid )
1110-
1111- user_primary_gid = await users_service .get_user_primary_group_id (
1112- request .app , user_id
1113- )
1114-
1115- await notify_project_document_updated (
1116- app = request .app ,
1117- project_id = project_uuid ,
1118- user_primary_gid = user_primary_gid ,
1119- client_session_id = client_session_id ,
1120- version = document_version ,
1121- document = project_document ,
1122- )
1123-
11241133
11251134async def update_project_linked_product (
11261135 app : web .Application , project_id : ProjectID , product_name : str
@@ -1249,20 +1258,11 @@ async def patch_project_node(
12491258 partial_node = partial_node ,
12501259 )
12511260
1252- (
1253- project_document ,
1254- document_version ,
1255- ) = await create_project_document_and_increment_version (app , project_id )
1256-
1257- user_primary_gid = await users_service .get_user_primary_group_id (app , user_id )
1258-
1259- await notify_project_document_updated (
1260- app = app ,
1261+ await _create_project_document_and_notify (
1262+ app ,
12611263 project_id = project_id ,
1262- user_primary_gid = user_primary_gid ,
1264+ user_id = user_id ,
12631265 client_session_id = client_session_id ,
1264- version = document_version ,
1265- document = project_document ,
12661266 )
12671267
12681268 # 4. Make calls to director-v2 to keep data in sync (ex. comp_* DB tables)
0 commit comments