Skip to content

Commit 83fc2d3

Browse files
committed
adds new column
1 parent 28707b4 commit 83fc2d3

File tree

3 files changed

+30
-31
lines changed

3 files changed

+30
-31
lines changed

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

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
from datetime import datetime
22
from enum import auto
3-
from typing import TypeAlias
3+
from typing import Any, TypeAlias
44
from uuid import UUID
55

6-
from pydantic import BaseModel, ConfigDict, Field
6+
from common_library.exclude import UnSet
7+
from pydantic import BaseModel, ConfigDict
78

89
from .products import ProductName
910
from .resource_tracker import PricingPlanId
@@ -24,22 +25,22 @@ class LicensedResourceType(StrAutoEnum):
2425
class LicensedItemDB(BaseModel):
2526
licensed_item_id: LicensedItemID
2627
name: str
28+
2729
license_key: str | None
2830
licensed_resource_type: LicensedResourceType
31+
licensed_resource_data: dict[str, Any] | None
32+
2933
pricing_plan_id: PricingPlanId
3034
product_name: ProductName
31-
created: datetime = Field(
32-
...,
33-
description="Timestamp on creation",
34-
)
35-
modified: datetime = Field(
36-
...,
37-
description="Timestamp of last modification",
38-
)
39-
# ----
35+
36+
created: datetime # Timestamp upon creation
37+
modified: datetime # Timestamp on last modification
38+
trashed: datetime | None # Marked as trashed
39+
4040
model_config = ConfigDict(from_attributes=True)
4141

4242

4343
class LicensedItemUpdateDB(BaseModel):
4444
name: str | None = None
4545
pricing_plan_id: PricingPlanId | None = None
46+
trashed: datetime | None | UnSet = UnSet.VALUE

packages/postgres-database/src/simcore_postgres_database/models/licensed_items.py

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,14 @@
44
import enum
55

66
import sqlalchemy as sa
7-
from sqlalchemy.dialects.postgresql import UUID
7+
from sqlalchemy.dialects import postgresql
88

9-
from ._common import RefActions, column_created_datetime, column_modified_datetime
9+
from ._common import (
10+
RefActions,
11+
column_created_datetime,
12+
column_modified_datetime,
13+
column_trashed_datetime,
14+
)
1015
from .base import metadata
1116

1217

@@ -19,22 +24,24 @@ class LicensedResourceType(str, enum.Enum):
1924
metadata,
2025
sa.Column(
2126
"licensed_item_id",
22-
UUID(as_uuid=True),
27+
postgresql.UUID(as_uuid=True),
2328
nullable=False,
2429
primary_key=True,
2530
server_default=sa.text("gen_random_uuid()"),
2631
),
27-
sa.Column(
28-
"name",
29-
sa.String,
30-
nullable=False,
31-
),
32+
sa.Column("name", sa.String, nullable=False, doc="Name identifier"),
3233
sa.Column(
3334
"licensed_resource_type",
3435
sa.Enum(LicensedResourceType),
3536
nullable=False,
3637
doc="Item type, ex. VIP_MODEL",
3738
),
39+
sa.Column(
40+
"licensed_resource_data",
41+
postgresql.JSONB,
42+
nullable=True,
43+
doc="Stores data related to this licensed resource that is used for read-only purposes",
44+
),
3845
sa.Column(
3946
"pricing_plan_id",
4047
sa.BigInteger,
@@ -66,4 +73,5 @@ class LicensedResourceType(str, enum.Enum):
6673
),
6774
column_created_datetime(timezone=True),
6875
column_modified_datetime(timezone=True),
76+
column_trashed_datetime("licensed_item"),
6977
)

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

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
from pydantic import NonNegativeInt
2121
from simcore_postgres_database.models.licensed_items import licensed_items
2222
from simcore_postgres_database.utils_repos import (
23+
get_columns_from_db_model,
2324
pass_or_acquire_connection,
2425
transaction_context,
2526
)
@@ -33,18 +34,7 @@
3334
_logger = logging.getLogger(__name__)
3435

3536

36-
_SELECTION_ARGS = (
37-
licensed_items.c.licensed_item_id,
38-
licensed_items.c.name,
39-
licensed_items.c.license_key,
40-
licensed_items.c.licensed_resource_type,
41-
licensed_items.c.pricing_plan_id,
42-
licensed_items.c.product_name,
43-
licensed_items.c.created,
44-
licensed_items.c.modified,
45-
)
46-
47-
assert set(LicensedItemDB.model_fields) == {c.name for c in _SELECTION_ARGS} # nosec
37+
_SELECTION_ARGS = get_columns_from_db_model(licensed_items, LicensedItemDB)
4838

4939

5040
async def create(

0 commit comments

Comments
 (0)