Skip to content

Commit d8ee4f0

Browse files
committed
refactor: rename ServiceFiltersDB to ServiceDBFilters and update usages
1 parent d6a0f26 commit d8ee4f0

File tree

6 files changed

+25
-35
lines changed

6 files changed

+25
-35
lines changed

services/catalog/src/simcore_service_catalog/api/rpc/_services.py

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
from models_library.rpc_pagination import DEFAULT_NUMBER_OF_ITEMS_PER_PAGE, PageLimitInt
1818
from models_library.services_types import ServiceKey, ServiceVersion
1919
from models_library.users import UserID
20-
from pydantic import ValidationError, validate_call
20+
from pydantic import TypeAdapter, ValidationError, validate_call
2121
from pyinstrument import Profiler
2222
from servicelib.logging_utils import log_decorator
2323
from servicelib.rabbitmq import RPCRouter
@@ -26,7 +26,7 @@
2626
CatalogItemNotFoundError,
2727
)
2828

29-
from ...models.services_db import ServiceFiltersDB
29+
from ...models.services_db import ServiceDBFilters
3030
from ...repository.groups import GroupsRepository
3131
from ...repository.services import ServicesRepository
3232
from ...service import catalog_services
@@ -58,16 +58,6 @@ async def _wrapper(app: FastAPI, **kwargs):
5858
return _wrapper
5959

6060

61-
def _type_adapter_to_domain(
62-
filters: ServiceListFilters | None,
63-
) -> ServiceFiltersDB | None:
64-
return (
65-
ServiceFiltersDB.model_validate(filters, from_attributes=True)
66-
if filters
67-
else None
68-
)
69-
70-
7161
@router.expose(reraise_if_error_type=(CatalogForbiddenError, ValidationError))
7262
@_profile_rpc_call
7363
@validate_call(config={"arbitrary_types_allowed": True})
@@ -89,7 +79,7 @@ async def list_services_paginated(
8979
user_id=user_id,
9080
limit=limit,
9181
offset=offset,
92-
filters=_type_adapter_to_domain(filters),
82+
filters=TypeAdapter(ServiceDBFilters | None).validate_python(filters),
9383
)
9484

9585
assert len(items) <= total_count # nosec
@@ -262,7 +252,7 @@ async def list_my_service_history_latest_first(
262252
service_key=service_key,
263253
limit=limit,
264254
offset=offset,
265-
filters=_type_adapter_to_domain(filters),
255+
filters=TypeAdapter(ServiceDBFilters | None).validate_python(filters),
266256
)
267257

268258
assert len(items) <= total_count # nosec

services/catalog/src/simcore_service_catalog/models/services_db.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,7 @@ def _update_json_schema_extra(schema: JsonDict) -> None:
248248
)
249249

250250

251-
class ServiceFiltersDB(Filters):
251+
class ServiceDBFilters(Filters):
252252
service_type: ServiceType | None = None
253253
service_key_pattern: str | None = None
254254
version_display_pattern: str | None = None

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
from sqlalchemy.sql.expression import func
2323
from sqlalchemy.sql.selectable import Select
2424

25-
from ..models.services_db import ServiceFiltersDB, ServiceMetaDataDBGet
25+
from ..models.services_db import ServiceDBFilters, ServiceMetaDataDBGet
2626

2727
SERVICES_META_DATA_COLS = get_columns_from_db_model(
2828
services_meta_data, ServiceMetaDataDBGet
@@ -118,7 +118,7 @@ def _has_access_rights(
118118

119119
def apply_services_filters(
120120
stmt: sa.sql.Select,
121-
filters: ServiceFiltersDB,
121+
filters: ServiceDBFilters,
122122
) -> sa.sql.Select:
123123
conditions = []
124124

@@ -160,7 +160,7 @@ def latest_services_total_count_stmt(
160160
product_name: ProductName,
161161
user_id: UserID,
162162
access_rights: sa.sql.ClauseElement,
163-
filters: ServiceFiltersDB | None = None,
163+
filters: ServiceDBFilters | None = None,
164164
):
165165
stmt = (
166166
sa.select(func.count(sa.distinct(services_meta_data.c.key)))
@@ -192,7 +192,7 @@ def list_latest_services_stmt(
192192
access_rights: sa.sql.ClauseElement,
193193
limit: int | None,
194194
offset: int | None,
195-
filters: ServiceFiltersDB | None = None,
195+
filters: ServiceDBFilters | None = None,
196196
):
197197
# get all distinct services key fitting a page
198198
# and its corresponding latest version

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
from ..models.services_db import (
3737
ReleaseDBGet,
3838
ServiceAccessRightsAtDB,
39-
ServiceFiltersDB,
39+
ServiceDBFilters,
4040
ServiceMetaDataDBCreate,
4141
ServiceMetaDataDBGet,
4242
ServiceMetaDataDBPatch,
@@ -385,7 +385,7 @@ async def list_latest_services(
385385
# list args: pagination
386386
limit: int | None = None,
387387
offset: int | None = None,
388-
filters: ServiceFiltersDB | None = None,
388+
filters: ServiceDBFilters | None = None,
389389
) -> tuple[PositiveInt, list[ServiceWithHistoryDBGet]]:
390390

391391
# get page
@@ -477,7 +477,7 @@ async def get_service_history_page(
477477
# list args: pagination
478478
limit: int | None = None,
479479
offset: int | None = None,
480-
filters: ServiceFiltersDB | None = None,
480+
filters: ServiceDBFilters | None = None,
481481
) -> tuple[PositiveInt, list[ReleaseDBGet]]:
482482

483483
base_stmt = (

services/catalog/src/simcore_service_catalog/service/catalog_services.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
from ..clients.director import DirectorClient
3434
from ..models.services_db import (
3535
ServiceAccessRightsAtDB,
36-
ServiceFiltersDB,
36+
ServiceDBFilters,
3737
ServiceMetaDataDBPatch,
3838
ServiceWithHistoryDBGet,
3939
)
@@ -137,7 +137,7 @@ async def list_latest_catalog_services(
137137
user_id: UserID,
138138
limit: PageLimitInt | None,
139139
offset: NonNegativeInt = 0,
140-
filters: ServiceFiltersDB | None = None,
140+
filters: ServiceDBFilters | None = None,
141141
) -> tuple[PageTotalCount, list[LatestServiceGet]]:
142142

143143
# defines the order
@@ -520,7 +520,7 @@ async def list_user_service_release_history(
520520
limit: PageLimitInt | None = None,
521521
offset: NonNegativeInt | None = None,
522522
# filters
523-
filters: ServiceFiltersDB | None = None,
523+
filters: ServiceDBFilters | None = None,
524524
# options
525525
include_compatibility: bool = False,
526526
) -> tuple[PageTotalCount, list[ServiceRelease]]:

services/catalog/tests/unit/with_dbs/test_repositories.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
from simcore_postgres_database.models.projects import ProjectType, projects
2929
from simcore_service_catalog.models.services_db import (
3030
ServiceAccessRightsAtDB,
31-
ServiceFiltersDB,
31+
ServiceDBFilters,
3232
ServiceMetaDataDBCreate,
3333
ServiceMetaDataDBGet,
3434
ServiceMetaDataDBPatch,
@@ -445,7 +445,7 @@ async def test_list_latest_services_with_filters(
445445
)
446446

447447
# Test: Apply filter for ServiceType.DYNAMIC
448-
filters = ServiceFiltersDB(service_type=ServiceType.DYNAMIC)
448+
filters = ServiceDBFilters(service_type=ServiceType.DYNAMIC)
449449
total_count, services_items = await services_repo.list_latest_services(
450450
product_name=target_product, user_id=user_id, filters=filters
451451
)
@@ -456,7 +456,7 @@ async def test_list_latest_services_with_filters(
456456
)
457457

458458
# Test: Apply filter for ServiceType.COMPUTATIONAL
459-
filters = ServiceFiltersDB(service_type=ServiceType.COMPUTATIONAL)
459+
filters = ServiceDBFilters(service_type=ServiceType.COMPUTATIONAL)
460460
total_count, services_items = await services_repo.list_latest_services(
461461
product_name=target_product, user_id=user_id, filters=filters
462462
)
@@ -505,7 +505,7 @@ async def test_list_latest_services_with_pattern_filters(
505505
)
506506

507507
# Test: Filter by service key pattern
508-
filters = ServiceFiltersDB(service_key_pattern="*/jupyter-*")
508+
filters = ServiceDBFilters(service_key_pattern="*/jupyter-*")
509509
total_count, services_items = await services_repo.list_latest_services(
510510
product_name=target_product, user_id=user_id, filters=filters
511511
)
@@ -519,7 +519,7 @@ async def test_list_latest_services_with_pattern_filters(
519519
)
520520

521521
# Test: More specific pattern
522-
filters = ServiceFiltersDB(service_key_pattern="*/jupyter-l*")
522+
filters = ServiceDBFilters(service_key_pattern="*/jupyter-l*")
523523
total_count, services_items = await services_repo.list_latest_services(
524524
product_name=target_product, user_id=user_id, filters=filters
525525
)
@@ -528,7 +528,7 @@ async def test_list_latest_services_with_pattern_filters(
528528
assert services_items[0].key.endswith("jupyter-lab")
529529

530530
# Test: Filter by version display pattern
531-
filters = ServiceFiltersDB(version_display_pattern="*2023*")
531+
filters = ServiceDBFilters(version_display_pattern="*2023*")
532532
total_count, services_items = await services_repo.list_latest_services(
533533
product_name=target_product, user_id=user_id, filters=filters
534534
)
@@ -537,15 +537,15 @@ async def test_list_latest_services_with_pattern_filters(
537537
assert services_items[0].version_display == "2023 Release"
538538

539539
# Test: Filter by version display pattern with NULL handling
540-
filters = ServiceFiltersDB(version_display_pattern="*")
540+
filters = ServiceDBFilters(version_display_pattern="*")
541541
total_count, services_items = await services_repo.list_latest_services(
542542
product_name=target_product, user_id=user_id, filters=filters
543543
)
544544
assert total_count == 3 # Should match all, including NULL version_display
545545
assert len(services_items) == 3
546546

547547
# Test: Combined filters
548-
filters = ServiceFiltersDB(
548+
filters = ServiceDBFilters(
549549
service_key_pattern="*/jupyter-*", version_display_pattern="*2024*"
550550
)
551551
total_count, services_items = await services_repo.list_latest_services(
@@ -768,7 +768,7 @@ async def test_get_service_history_page_with_filters(
768768
assert [release.version for release in history] == release_versions
769769

770770
# Test: Apply filter for
771-
filters = ServiceFiltersDB(service_type=expected_service_type)
771+
filters = ServiceDBFilters(service_type=expected_service_type)
772772
total_count, filtered_history = await services_repo.get_service_history_page(
773773
product_name=target_product,
774774
user_id=user_id,
@@ -785,7 +785,7 @@ async def test_get_service_history_page_with_filters(
785785
if expected_service_type != ServiceType.COMPUTATIONAL
786786
else ServiceType.DYNAMIC
787787
)
788-
filters = ServiceFiltersDB(service_type=different_service_type)
788+
filters = ServiceDBFilters(service_type=different_service_type)
789789
total_count, no_history = await services_repo.get_service_history_page(
790790
product_name=target_product,
791791
user_id=user_id,

0 commit comments

Comments
 (0)