Skip to content

Commit e1378c7

Browse files
committed
Merge branch 'feature/store-socket-events' of github.com:odeimaiz/osparc-simcore into feature/store-socket-events
2 parents 91bb98b + 7b2bba2 commit e1378c7

File tree

4 files changed

+53
-2
lines changed

4 files changed

+53
-2
lines changed
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,25 @@
11
from fastapi import FastAPI
22
from settings_library.postgres import PostgresSettings
33

4+
from ._asyncpg import (
5+
asyncpg_close_db_connection,
6+
asyncpg_connect_to_db,
7+
get_asyncpg_engine,
8+
)
49
from .events import close_db_connection, connect_to_db
510

611

712
def setup(app: FastAPI, settings: PostgresSettings) -> None:
813
async def on_startup() -> None:
914
await connect_to_db(app, settings)
15+
await asyncpg_connect_to_db(app, settings)
1016

1117
async def on_shutdown() -> None:
18+
await asyncpg_close_db_connection(app)
1219
await close_db_connection(app)
1320

1421
app.add_event_handler("startup", on_startup)
1522
app.add_event_handler("shutdown", on_shutdown)
23+
24+
25+
__all__: tuple[str, ...] = ("get_asyncpg_engine",)
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import logging
2+
3+
from fastapi import FastAPI
4+
from servicelib.db_asyncpg_utils import create_async_engine_and_pg_database_ready
5+
from servicelib.logging_utils import log_context
6+
from settings_library.postgres import PostgresSettings
7+
from simcore_postgres_database.utils_aiosqlalchemy import get_pg_engine_stateinfo
8+
9+
_logger = logging.getLogger(__name__)
10+
11+
12+
async def asyncpg_connect_to_db(app: FastAPI, settings: PostgresSettings) -> None:
13+
with log_context(
14+
_logger,
15+
logging.DEBUG,
16+
f"Connecting and migraging {settings.dsn_with_async_sqlalchemy}",
17+
):
18+
engine = await create_async_engine_and_pg_database_ready(settings)
19+
20+
app.state.asyncpg_engine = engine
21+
_logger.debug(
22+
"Setup engine: %s",
23+
await get_pg_engine_stateinfo(engine),
24+
)
25+
26+
27+
async def asyncpg_close_db_connection(app: FastAPI) -> None:
28+
with log_context(
29+
_logger, logging.DEBUG, f"db disconnect of {app.state.asyncpg_engine}"
30+
):
31+
if engine := app.state.asyncpg_engine:
32+
await engine.dispose()
33+
34+
35+
def get_asyncpg_engine(app: FastAPI):
36+
return app.state.asyncpg_engine

services/web/server/src/simcore_service_webserver/projects/_db_utils.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import sqlalchemy as sa
1010
from aiopg.sa.connection import SAConnection
1111
from aiopg.sa.result import RowProxy
12-
from models_library.projects import ProjectAtDB
12+
from models_library.projects import ProjectAtDB, ProjectID
1313
from models_library.projects_nodes import Node
1414
from models_library.projects_nodes_io import NodeIDStr
1515
from models_library.users import UserID
@@ -164,14 +164,18 @@ async def _get_tags_by_project(conn: SAConnection, project_id: str) -> list:
164164

165165
@staticmethod
166166
async def _upsert_tags_in_project(
167-
conn: SAConnection, project_index_id: int, project_tags: list[int]
167+
conn: SAConnection,
168+
project_index_id: int,
169+
project_uuid: ProjectID,
170+
project_tags: list[int],
168171
) -> None:
169172
for tag_id in project_tags:
170173
await conn.execute(
171174
pg_insert(projects_tags)
172175
.values(
173176
project_id=project_index_id,
174177
tag_id=tag_id,
178+
project_uuid_for_rut=project_uuid,
175179
)
176180
.on_conflict_do_nothing()
177181
)

services/web/server/src/simcore_service_webserver/projects/db.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,7 @@ def _reraise_if_not_unique_uuid_error(err: UniqueViolation):
202202
await self._upsert_tags_in_project(
203203
conn=conn,
204204
project_index_id=project_index,
205+
project_uuid=project_uuid,
205206
project_tags=project_tag_ids,
206207
)
207208
selected_values["tags"] = project_tag_ids

0 commit comments

Comments
 (0)