Skip to content

Commit 775f361

Browse files
committed
adapts repository
1 parent a76f9bc commit 775f361

File tree

4 files changed

+52
-31
lines changed

4 files changed

+52
-31
lines changed

packages/models-library/src/models_library/api_schemas_webserver/licensed_items.py

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
from datetime import datetime
2-
from typing import NamedTuple
2+
from typing import NamedTuple, Self
33

4-
from models_library.licensed_items import LicensedItemID, LicensedResourceType
4+
from common_library.dict_tools import remap_keys
5+
from models_library.licensed_items import (
6+
LicensedItemDB,
7+
LicensedItemID,
8+
LicensedResourceType,
9+
)
510
from models_library.resource_tracker import PricingPlanId
611
from pydantic import ConfigDict, PositiveInt
712

@@ -32,6 +37,19 @@ class LicensedItemGet(OutputSchema):
3237
}
3338
)
3439

40+
@classmethod
41+
def from_domain_model(cls, licensed_item_db: LicensedItemDB) -> Self:
42+
return cls.model_validate(
43+
remap_keys(
44+
licensed_item_db.model_dump(),
45+
{
46+
"licensed_resource_name": "name",
47+
"created": "created_at",
48+
"modified": "modified_at",
49+
},
50+
)
51+
)
52+
3553

3654
class LicensedItemGetPage(NamedTuple):
3755
items: list[LicensedItemGet]

services/web/server/src/simcore_service_webserver/licenses/_licensed_items_repository.py

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,20 +71,33 @@ async def list_(
7171
offset: NonNegativeInt,
7272
limit: NonNegativeInt,
7373
order_by: OrderBy,
74-
filter_trashed: Literal["exclude", "only", "include"] = "exclude",
74+
trashed: Literal["exclude", "only", "include"] = "exclude",
75+
inactive: Literal["exclude", "only", "include"] = "exclude",
7576
) -> tuple[int, list[LicensedItemDB]]:
77+
7678
base_query = (
7779
select(*_SELECTION_ARGS)
7880
.select_from(licensed_items)
7981
.where(licensed_items.c.product_name == product_name)
8082
)
8183

8284
# Apply trashed filter
83-
if filter_trashed == "exclude":
85+
if trashed == "exclude":
8486
base_query = base_query.where(licensed_items.c.trashed.is_(None))
85-
elif filter_trashed == "only":
87+
elif trashed == "only":
8688
base_query = base_query.where(licensed_items.c.trashed.is_not(None))
8789

90+
if inactive == "exclude":
91+
base_query = base_query.where(
92+
licensed_items.c.product_name.is_(None)
93+
or licensed_items.c.licensed_item_id.is_(None)
94+
)
95+
elif inactive == "only":
96+
base_query = base_query.where(
97+
licensed_items.c.product_name.is_not(None)
98+
and licensed_items.c.licensed_item_id.is_not(None)
99+
)
100+
88101
# Select total count from base_query
89102
subquery = base_query.subquery()
90103
count_query = select(func.count()).select_from(subquery)

services/web/server/src/simcore_service_webserver/licenses/_licensed_items_service.py

Lines changed: 11 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -42,15 +42,7 @@ async def get_licensed_item(
4242
licensed_item_db = await _licensed_items_repository.get(
4343
app, licensed_item_id=licensed_item_id, product_name=product_name
4444
)
45-
return LicensedItemGet(
46-
licensed_item_id=licensed_item_db.licensed_item_id,
47-
name=licensed_item_db.name,
48-
license_key=licensed_item_db.license_key,
49-
licensed_resource_type=licensed_item_db.licensed_resource_type,
50-
pricing_plan_id=licensed_item_db.pricing_plan_id,
51-
created_at=licensed_item_db.created,
52-
modified_at=licensed_item_db.modified,
53-
)
45+
return LicensedItemGet.from_domain_model(licensed_item_db)
5446

5547

5648
async def list_licensed_items(
@@ -61,21 +53,19 @@ async def list_licensed_items(
6153
limit: int,
6254
order_by: OrderBy,
6355
) -> LicensedItemGetPage:
64-
total_count, licensed_item_db_list = await _licensed_items_repository.list_(
65-
app, product_name=product_name, offset=offset, limit=limit, order_by=order_by
56+
total_count, items = await _licensed_items_repository.list_(
57+
app,
58+
product_name=product_name,
59+
offset=offset,
60+
limit=limit,
61+
order_by=order_by,
62+
trashed="exclude",
63+
inactive="exclude",
6664
)
6765
return LicensedItemGetPage(
6866
items=[
69-
LicensedItemGet(
70-
licensed_item_id=licensed_item_db.licensed_item_id,
71-
name=licensed_item_db.name,
72-
license_key=licensed_item_db.license_key,
73-
licensed_resource_type=licensed_item_db.licensed_resource_type,
74-
pricing_plan_id=licensed_item_db.pricing_plan_id,
75-
created_at=licensed_item_db.created,
76-
modified_at=licensed_item_db.modified,
77-
)
78-
for licensed_item_db in licensed_item_db_list
67+
LicensedItemGet.from_domain_model(licensed_item_db)
68+
for licensed_item_db in items
7969
],
8070
total=total_count,
8171
)

services/web/server/tests/unit/with_dbs/04/licenses/test_licensed_items_repository.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ async def test_licensed_items_db_crud(
6666
licensed_item_id=_licensed_item_id,
6767
product_name=osparc_product_name,
6868
)
69-
assert licensed_item_db.name == "Model A"
69+
assert licensed_item_db.licensed_resource_name == "Model A"
7070

7171
await _licensed_items_repository.update(
7272
client.app,
@@ -80,7 +80,7 @@ async def test_licensed_items_db_crud(
8080
licensed_item_id=_licensed_item_id,
8181
product_name=osparc_product_name,
8282
)
83-
assert licensed_item_db.name == "Model B"
83+
assert licensed_item_db.licensed_resource_name == "Model B"
8484

8585
licensed_item_db = await _licensed_items_repository.delete(
8686
client.app,
@@ -140,7 +140,7 @@ async def test_licensed_items_db_trash(
140140
offset=0,
141141
limit=10,
142142
order_by=OrderBy(field="modified"),
143-
filter_trashed="include",
143+
trashed="include",
144144
)
145145
assert total_count == 2
146146
assert {i.licensed_item_id for i in items} == set(licensed_item_ids)
@@ -152,7 +152,7 @@ async def test_licensed_items_db_trash(
152152
offset=0,
153153
limit=10,
154154
order_by=OrderBy(field="modified"),
155-
filter_trashed="exclude",
155+
trashed="exclude",
156156
)
157157
assert total_count == 1
158158
assert items[0].licensed_item_id == licensed_item_id2
@@ -165,7 +165,7 @@ async def test_licensed_items_db_trash(
165165
offset=0,
166166
limit=10,
167167
order_by=OrderBy(field="modified"),
168-
filter_trashed="only",
168+
trashed="only",
169169
)
170170
assert total_count == 1
171171
assert items[0].licensed_item_id == trashed_item.licensed_item_id

0 commit comments

Comments
 (0)