Skip to content

Commit 603a27d

Browse files
🎨 add constrains in resource_tracker_pricing_plan_to_service and licensed_item_to_resource DB tables (🗃️) (#7269)
1 parent e7e0b79 commit 603a27d

File tree

3 files changed

+72
-1
lines changed

3 files changed

+72
-1
lines changed
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
"""add restriction ondelete
2+
3+
Revision ID: d84edab53761
4+
Revises: 163b11424cb1
5+
Create Date: 2025-02-25 09:18:14.541874+00:00
6+
7+
"""
8+
from alembic import op
9+
10+
# revision identifiers, used by Alembic.
11+
revision = "d84edab53761"
12+
down_revision = "163b11424cb1"
13+
branch_labels = None
14+
depends_on = None
15+
16+
17+
def upgrade():
18+
# ### commands auto generated by Alembic - please adjust! ###
19+
op.create_unique_constraint(
20+
"uq_licensed_item_to_resource_resource_id",
21+
"licensed_item_to_resource",
22+
["licensed_resource_id"],
23+
)
24+
op.drop_constraint(
25+
"fk_rut_pricing_plan_to_service_key_and_version",
26+
"resource_tracker_pricing_plan_to_service",
27+
type_="foreignkey",
28+
)
29+
op.create_foreign_key(
30+
"fk_rut_pricing_plan_to_service_key_and_version",
31+
"resource_tracker_pricing_plan_to_service",
32+
"services_meta_data",
33+
["service_key", "service_version"],
34+
["key", "version"],
35+
onupdate="CASCADE",
36+
ondelete="RESTRICT",
37+
)
38+
# ### end Alembic commands ###
39+
40+
41+
def downgrade():
42+
# ### commands auto generated by Alembic - please adjust! ###
43+
op.drop_constraint(
44+
"fk_rut_pricing_plan_to_service_key_and_version",
45+
"resource_tracker_pricing_plan_to_service",
46+
type_="foreignkey",
47+
)
48+
op.create_foreign_key(
49+
"fk_rut_pricing_plan_to_service_key_and_version",
50+
"resource_tracker_pricing_plan_to_service",
51+
"services_meta_data",
52+
["service_key", "service_version"],
53+
["key", "version"],
54+
onupdate="CASCADE",
55+
ondelete="CASCADE",
56+
)
57+
op.drop_constraint(
58+
"uq_licensed_item_to_resource_resource_id",
59+
"licensed_item_to_resource",
60+
type_="unique",
61+
)
62+
# ### end Alembic commands ###

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,13 @@
3131
),
3232
column_created_datetime(timezone=True),
3333
column_modified_datetime(timezone=True),
34+
#########
35+
# NOTE: Currently, there is a constraint that a resource item ID cannot be in multiple licensed items.
36+
# The reason is that the license key and license version coming from the internal license server are part of the licensed resource domain.
37+
# Sim4Life performs a mapping on their side, where the license key and version are mapped to a licensed item.
38+
# If this constraint is broken, the mapping logic in Sim4Life might break.
39+
sa.UniqueConstraint(
40+
"licensed_resource_id",
41+
name="uq_licensed_item_to_resource_resource_id",
42+
),
3443
)

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,6 @@
5050
["services_meta_data.key", "services_meta_data.version"],
5151
name="fk_rut_pricing_plan_to_service_key_and_version",
5252
onupdate=RefActions.CASCADE,
53-
ondelete=RefActions.CASCADE,
53+
ondelete=RefActions.RESTRICT,
5454
),
5555
)

0 commit comments

Comments
 (0)