Skip to content

Commit 9af350e

Browse files
committed
✨ Refactor repository lifespan management: replace database_lifespan with repository_lifespan for improved clarity
1 parent 5877d87 commit 9af350e

File tree

8 files changed

+24
-17
lines changed

8 files changed

+24
-17
lines changed

services/catalog/src/simcore_service_catalog/core/events.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
from fastapi_lifespan_manager import LifespanManager, State
66
from servicelib.fastapi.postgres_lifespan import (
77
PostgresLifespanState,
8-
postgres_database_lifespan,
98
)
109
from servicelib.fastapi.prometheus_instrumentation import (
1110
lifespan_prometheus_instrumentation,
@@ -15,7 +14,7 @@
1514
from ..api.rpc.events import rpc_api_lifespan
1615
from ..clients.director import director_lifespan
1716
from ..clients.rabbitmq import rabbitmq_lifespan
18-
from ..repository.events import database_lifespan
17+
from ..repository.events import repository_lifespan
1918
from ..service.function_services import function_services_lifespan
2019
from .background_tasks import background_task_lifespan
2120
from .settings import ApplicationSettings
@@ -62,8 +61,7 @@ def create_app_lifespan():
6261
app_lifespan.add(_main_lifespan)
6362

6463
# - postgres
65-
app_lifespan.add(postgres_database_lifespan)
66-
app_lifespan.add(database_lifespan)
64+
app_lifespan.add(repository_lifespan)
6765

6866
# - rabbitmq
6967
app_lifespan.add(rabbitmq_lifespan)

services/catalog/src/simcore_service_catalog/repository/events.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,23 @@
22
from collections.abc import AsyncIterator
33

44
from fastapi import FastAPI
5-
from fastapi_lifespan_manager import State
6-
from servicelib.fastapi.postgres_lifespan import PostgresLifespanState
5+
from fastapi_lifespan_manager import LifespanManager, State
6+
from servicelib.fastapi.postgres_lifespan import (
7+
PostgresLifespanState,
8+
postgres_database_lifespan,
9+
)
710

811
from .products import ProductsRepository
912

1013
_logger = logging.getLogger(__name__)
1114

1215

13-
async def database_lifespan(app: FastAPI, state: State) -> AsyncIterator[State]:
16+
repository_lifespan = LifespanManager()
17+
repository_lifespan.add(postgres_database_lifespan)
18+
19+
20+
@repository_lifespan.add
21+
async def _database_lifespan(app: FastAPI, state: State) -> AsyncIterator[State]:
1422
app.state.engine = state[PostgresLifespanState.POSTGRES_ASYNC_ENGINE]
1523

1624
repo = ProductsRepository(db_engine=app.state.engine)

services/catalog/tests/unit/conftest.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
import simcore_service_catalog
1818
import simcore_service_catalog.core.application
1919
import simcore_service_catalog.core.events
20+
import simcore_service_catalog.repository
21+
import simcore_service_catalog.repository.events
2022
import yaml
2123
from asgi_lifespan import LifespanManager
2224
from faker import Faker
@@ -216,11 +218,10 @@ def service_caching_disabled(monkeypatch: pytest.MonkeyPatch) -> None:
216218

217219

218220
@pytest.fixture
219-
def postgres_setup_disabled(mocker: MockerFixture):
221+
def repository_lifespan_disabled(mocker: MockerFixture):
220222
mocker.patch.object(
221-
simcore_service_catalog.core.events, "postgres_database_lifespan"
223+
simcore_service_catalog.repository.events, "repository_lifespan"
222224
)
223-
mocker.patch.object(simcore_service_catalog.core.events, "database_lifespan")
224225

225226

226227
@pytest.fixture

services/catalog/tests/unit/test_api_rest.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010

1111
def test_sync_client(
12-
postgres_setup_disabled: None,
12+
repository_lifespan_disabled: None,
1313
rabbitmq_and_rpc_setup_disabled: None,
1414
background_tasks_setup_disabled: None,
1515
director_setup_disabled: None,
@@ -24,7 +24,7 @@ def test_sync_client(
2424

2525

2626
async def test_async_client(
27-
postgres_setup_disabled: None,
27+
repository_lifespan_disabled: None,
2828
rabbitmq_and_rpc_setup_disabled: None,
2929
background_tasks_setup_disabled: None,
3030
director_setup_disabled: None,

services/catalog/tests/unit/test_service_director.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ def app_environment(
3333

3434

3535
async def test_director_client_high_level_api(
36-
postgres_setup_disabled: None,
36+
repository_lifespan_disabled: None,
3737
background_tasks_setup_disabled: None,
3838
rabbitmq_and_rpc_setup_disabled: None,
3939
expected_director_list_services: list[dict[str, Any]],
@@ -59,7 +59,7 @@ async def test_director_client_high_level_api(
5959

6060

6161
async def test_director_client_low_level_api(
62-
postgres_setup_disabled: None,
62+
repository_lifespan_disabled: None,
6363
background_tasks_setup_disabled: None,
6464
rabbitmq_and_rpc_setup_disabled: None,
6565
mocked_director_service_api: MockRouter,

services/catalog/tests/unit/test_service_manifest.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ def app_environment(
3232

3333

3434
async def test_services_manifest_api(
35-
postgres_setup_disabled: None,
35+
repository_lifespan_disabled: None,
3636
rabbitmq_and_rpc_setup_disabled: None,
3737
mocked_director_service_api: MockRouter,
3838
app: FastAPI,

services/catalog/tests/unit/test_utils_service_extras.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ def mock_engine(app: FastAPI) -> None:
1717

1818

1919
async def test_get_service_extras(
20-
postgres_setup_disabled: None,
20+
repository_lifespan_disabled: None,
2121
mocked_director_service_api: MockRouter,
2222
rabbitmq_and_rpc_setup_disabled: None,
2323
background_tasks_setup_disabled: None,

services/catalog/tests/unit/test_utils_service_labels.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ def mock_engine(app: FastAPI) -> None:
1616

1717

1818
async def test_get_service_labels(
19-
postgres_setup_disabled: None,
19+
repository_lifespan_disabled: None,
2020
mocked_director_service_api: MockRouter,
2121
rabbitmq_and_rpc_setup_disabled: None,
2222
background_tasks_setup_disabled: None,

0 commit comments

Comments
 (0)