Skip to content

Commit 2305d68

Browse files
🎨 add is_hidden_on_market field for listing (πŸ—ƒοΈ) (#7227)
1 parent 43afd74 commit 2305d68

File tree

11 files changed

+67
-0
lines changed

11 files changed

+67
-0
lines changed

β€Žpackages/models-library/src/models_library/api_schemas_webserver/licensed_items.pyβ€Ž

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ class LicensedItemRpcGet(BaseModel):
2828
licensed_resource_type: LicensedResourceType
2929
licensed_resources: list[dict[str, Any]]
3030
pricing_plan_id: PricingPlanId
31+
is_hidden_on_market: bool
3132
created_at: datetime
3233
modified_at: datetime
3334

@@ -42,6 +43,7 @@ class LicensedItemRpcGet(BaseModel):
4243
"licensed_resource_type": f"{LicensedResourceType.VIP_MODEL}",
4344
"licensed_resources": [cast(JsonDict, VIP_DETAILS_EXAMPLE)],
4445
"pricing_plan_id": "15",
46+
"is_hidden_on_market": False,
4547
"created_at": "2024-12-12 09:59:26.422140",
4648
"modified_at": "2024-12-12 09:59:26.422140",
4749
}

β€Žpackages/models-library/src/models_library/licenses.pyβ€Ž

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ class LicensedItemDB(BaseModel):
8181

8282
pricing_plan_id: PricingPlanId
8383
product_name: ProductName
84+
is_hidden_on_market: bool
8485

8586
# states
8687
created: datetime
@@ -124,6 +125,7 @@ class LicensedItem(BaseModel):
124125
licensed_resource_type: LicensedResourceType
125126
licensed_resources: list[dict[str, Any]]
126127
pricing_plan_id: PricingPlanId
128+
is_hidden_on_market: bool
127129
created_at: datetime
128130
modified_at: datetime
129131

@@ -149,6 +151,7 @@ def _update_json_schema_extra(schema: JsonDict) -> None:
149151
)
150152
],
151153
"pricing_plan_id": "15",
154+
"is_hidden_on_market": False,
152155
"created_at": "2024-12-12 09:59:26.422140",
153156
"modified_at": "2024-12-12 09:59:26.422140",
154157
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
"""add is_hidden_on_market field
2+
3+
Revision ID: e8ffc0c96336
4+
Revises: a53c3c153bc8
5+
Create Date: 2025-02-13 18:05:42.851252+00:00
6+
7+
"""
8+
import sqlalchemy as sa
9+
from alembic import op
10+
11+
# revision identifiers, used by Alembic.
12+
revision = "e8ffc0c96336"
13+
down_revision = "a53c3c153bc8"
14+
branch_labels = None
15+
depends_on = None
16+
17+
18+
def upgrade():
19+
# ### commands auto generated by Alembic - please adjust! ###
20+
op.add_column(
21+
"licensed_items",
22+
sa.Column(
23+
"is_hidden_on_market",
24+
sa.Boolean(),
25+
server_default=sa.text("false"),
26+
nullable=False,
27+
),
28+
)
29+
# ### end Alembic commands ###
30+
31+
32+
def downgrade():
33+
# ### commands auto generated by Alembic - please adjust! ###
34+
op.drop_column("licensed_items", "is_hidden_on_market")
35+
# ### end Alembic commands ###

β€Žpackages/postgres-database/src/simcore_postgres_database/models/licensed_items.pyβ€Ž

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,13 @@ class LicensedResourceType(str, enum.Enum):
6969
nullable=False,
7070
doc="Product name identifier. If None, then the item is not exposed",
7171
),
72+
sa.Column(
73+
"is_hidden_on_market",
74+
sa.Boolean(),
75+
nullable=False,
76+
server_default=sa.text("false"),
77+
doc="If true, the item is not listed on the market. (Public API might want to see all of them, even if they are not listed on the Market)",
78+
),
7279
column_created_datetime(timezone=True),
7380
column_modified_datetime(timezone=True),
7481
sa.Index("idx_licensed_items_key_version", "key", "version", unique=True),

β€Žservices/api-server/openapi.jsonβ€Ž

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6716,6 +6716,10 @@
67166716
"title": "Pricing Plan Id",
67176717
"minimum": 0
67186718
},
6719+
"is_hidden_on_market": {
6720+
"type": "boolean",
6721+
"title": "Is Hidden On Market"
6722+
},
67196723
"created_at": {
67206724
"type": "string",
67216725
"format": "date-time",
@@ -6736,6 +6740,7 @@
67366740
"licensed_resource_type",
67376741
"licensed_resources",
67386742
"pricing_plan_id",
6743+
"is_hidden_on_market",
67396744
"created_at",
67406745
"modified_at"
67416746
],

β€Žservices/api-server/src/simcore_service_api_server/models/schemas/model_adapter.pyβ€Ž

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,7 @@ class LicensedItemGet(BaseModel):
148148
licensed_resource_type: LicensedResourceType
149149
licensed_resources: list[dict[str, Any]]
150150
pricing_plan_id: PricingPlanId
151+
is_hidden_on_market: bool
151152
created_at: datetime
152153
modified_at: datetime
153154
model_config = ConfigDict(

β€Žservices/api-server/src/simcore_service_api_server/services_rpc/wb_api_server.pyβ€Ž

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ def _create_licensed_items_get_page(
6464
licensed_resource_type=elm.licensed_resource_type,
6565
licensed_resources=elm.licensed_resources,
6666
pricing_plan_id=elm.pricing_plan_id,
67+
is_hidden_on_market=elm.is_hidden_on_market,
6768
created_at=elm.created_at,
6869
modified_at=elm.modified_at,
6970
)

β€Žservices/web/server/src/simcore_service_webserver/licenses/_licensed_items_repository.pyβ€Ž

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ async def list_(
9999
order_by: OrderBy,
100100
# filters
101101
filter_by_licensed_resource_type: LicensedResourceType | None = None,
102+
include_hidden_items_on_market: bool = False,
102103
) -> tuple[int, list[LicensedItemDB]]:
103104

104105
base_query = (
@@ -111,6 +112,8 @@ async def list_(
111112
base_query.where(
112113
licensed_items.c.licensed_resource_type == filter_by_licensed_resource_type
113114
)
115+
if not include_hidden_items_on_market:
116+
base_query.where(licensed_items.c.is_hidden_on_market.is_(False))
114117

115118
# Select total count from base_query
116119
subquery = base_query.subquery()
@@ -247,6 +250,7 @@ async def get_licensed_item_by_key_version(
247250
licensed_items.c.licensed_resource_type,
248251
_licensed_resource_subquery.c.licensed_resources,
249252
licensed_items.c.pricing_plan_id,
253+
licensed_items.c.is_hidden_on_market,
250254
licensed_items.c.created.label("created_at"),
251255
licensed_items.c.modified.label("modified_at"),
252256
)
@@ -282,6 +286,7 @@ async def list_licensed_items(
282286
order_by: OrderBy,
283287
# filters
284288
filter_by_licensed_resource_type: LicensedResourceType | None = None,
289+
include_hidden_items_on_market: bool = False,
285290
) -> tuple[int, list[LicensedItem]]:
286291

287292
base_query = (
@@ -293,6 +298,7 @@ async def list_licensed_items(
293298
licensed_items.c.licensed_resource_type,
294299
_licensed_resource_subquery.c.licensed_resources,
295300
licensed_items.c.pricing_plan_id,
301+
licensed_items.c.is_hidden_on_market,
296302
licensed_items.c.created.label("created_at"),
297303
licensed_items.c.modified.label("modified_at"),
298304
)
@@ -310,6 +316,8 @@ async def list_licensed_items(
310316
base_query.where(
311317
licensed_items.c.licensed_resource_type == filter_by_licensed_resource_type
312318
)
319+
if not include_hidden_items_on_market:
320+
base_query.where(licensed_items.c.is_hidden_on_market.is_(False))
313321

314322
# Select total count from base_query
315323
subquery = base_query.subquery()

β€Žservices/web/server/src/simcore_service_webserver/licenses/_licensed_items_rest.pyβ€Ž

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ async def list_licensed_items(request: web.Request):
5050
await _licensed_items_service.list_licensed_items(
5151
app=request.app,
5252
product_name=req_ctx.product_name,
53+
include_hidden_items_on_market=False,
5354
offset=query_params.offset,
5455
limit=query_params.limit,
5556
order_by=OrderBy.model_construct(**query_params.order_by.model_dump()),

β€Žservices/web/server/src/simcore_service_webserver/licenses/_licensed_items_service.pyβ€Ž

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,13 +54,15 @@ async def list_licensed_items(
5454
app: web.Application,
5555
*,
5656
product_name: ProductName,
57+
include_hidden_items_on_market: bool,
5758
offset: NonNegativeInt,
5859
limit: int,
5960
order_by: OrderBy,
6061
) -> LicensedItemPage:
6162
total_count, items = await _licensed_items_repository.list_licensed_items(
6263
app,
6364
product_name=product_name,
65+
include_hidden_items_on_market=include_hidden_items_on_market,
6466
offset=offset,
6567
limit=limit,
6668
order_by=order_by,

0 commit comments

Comments
Β (0)