|
8 | 8 | from fastapi import FastAPI, status |
9 | 9 | from httpx import AsyncClient, HTTPError |
10 | 10 | from models_library.api_schemas_directorv2.dynamic_services import DynamicServiceGet |
11 | | -from models_library.projects import ProjectID |
| 11 | +from models_library.projects import NodesDict, ProjectID |
12 | 12 | from models_library.projects_nodes_io import NodeID, NodeIDStr |
13 | 13 | from models_library.services import ServiceType |
14 | 14 | from models_library.services_enums import ServiceBootType, ServiceState |
|
26 | 26 | from ..models.dynamic_services_scheduler import DynamicSidecarNamesHelper |
27 | 27 | from ..modules import db, director_v0, dynamic_sidecar |
28 | 28 | from ..modules.db.repositories.projects import ProjectsRepository |
| 29 | +from ..modules.db.repositories.projects_nodes import ProjectsNodesRepository |
29 | 30 | from ..modules.dynamic_sidecar import api_client |
30 | 31 | from ..modules.projects_networks import requires_dynamic_sidecar |
31 | 32 | from ..utils.db import get_repository |
@@ -94,9 +95,14 @@ async def async_project_save_state(project_id: ProjectID, save_attempts: int) -> |
94 | 95 | ) |
95 | 96 | project_at_db = await projects_repository.get_project(project_id) |
96 | 97 |
|
| 98 | + project_nodes_repo: ProjectsNodesRepository = get_repository( |
| 99 | + app, ProjectsNodesRepository |
| 100 | + ) |
| 101 | + workbench: NodesDict = await project_nodes_repo.get_nodes(project_id) |
| 102 | + |
97 | 103 | typer.echo(f"Saving project '{project_at_db.uuid}' - '{project_at_db.name}'") |
98 | 104 | nodes_failed_to_save: list[NodeIDStr] = [] |
99 | | - for node_uuid, node_content in project_at_db.workbench.items(): |
| 105 | + for node_uuid, node_content in workbench.items(): |
100 | 106 | # onl dynamic-sidecars are used |
101 | 107 | if not await requires_dynamic_sidecar( |
102 | 108 | service_key=node_content.key, |
@@ -226,13 +232,15 @@ async def _get_nodes_render_data( |
226 | 232 | app: FastAPI, |
227 | 233 | project_id: ProjectID, |
228 | 234 | ) -> list[RenderData]: |
229 | | - projects_repository: ProjectsRepository = get_repository(app, ProjectsRepository) |
| 235 | + project_nodes_repo: ProjectsNodesRepository = get_repository( |
| 236 | + app, ProjectsNodesRepository |
| 237 | + ) |
230 | 238 |
|
231 | | - project_at_db = await projects_repository.get_project(project_id) |
| 239 | + workbench: NodesDict = await project_nodes_repo.get_nodes(project_id) |
232 | 240 |
|
233 | 241 | render_data: list[RenderData] = [] |
234 | 242 | async with AsyncClient() as client: |
235 | | - for node_uuid, node_content in project_at_db.workbench.items(): |
| 243 | + for node_uuid, node_content in workbench.items(): |
236 | 244 | service_type = get_service_from_key(service_key=node_content.key) |
237 | 245 | render_data.append( |
238 | 246 | await _to_render_data( |
|
0 commit comments