diff --git a/gso/migrations/versions/2025-06-17_550e3aebc1c5_update_l2c_descriptions.py b/gso/migrations/versions/2025-06-17_550e3aebc1c5_update_l2c_descriptions.py new file mode 100644 index 0000000000000000000000000000000000000000..dd9826c8dcda1227396b5cc52b15d9cb47dfc9ee --- /dev/null +++ b/gso/migrations/versions/2025-06-17_550e3aebc1c5_update_l2c_descriptions.py @@ -0,0 +1,54 @@ +"""Update Layer 2 Circuit subscription descriptions. + +Revision ID: 550e3aebc1c5 +Revises: d23b59abc6a5 +Create Date: 2025-06-04 16:08:56.288635 + +This database migration updates the description of all Layer2Circuit-type subscriptions by having fit the format: +``product_name - custom_service_name``. +""" +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision = '550e3aebc1c5' +down_revision = 'd23b59abc6a5' +branch_labels = None +depends_on = None + + +def upgrade() -> None: + conn = op.get_bind() + conn.execute(sa.text(""" +UPDATE subscriptions s +SET description = ( + Regexp_replace(subscriptions.description, '^(.+) - .+$', '\\1 - ') || + subscription_instance_values.value + ) +FROM subscriptions + JOIN products + ON subscriptions.product_id = products.product_id + JOIN product_product_blocks + ON products.product_id = product_product_blocks.product_id + JOIN product_block_resource_types + ON product_product_blocks.product_block_id = + product_block_resource_types.product_block_id + JOIN resource_types + ON product_block_resource_types.resource_type_id = + resource_types.resource_type_id + JOIN subscription_instances + ON subscriptions.subscription_id = + subscription_instances.subscription_id + JOIN subscription_instance_values + ON ( resource_types.resource_type_id = + subscription_instance_values.resource_type_id + AND subscription_instances.subscription_instance_id = + subscription_instance_values.subscription_instance_id ) +WHERE resource_types.resource_type = 'custom_service_name' + AND products.product_type = 'Layer2Circuit' + AND s.subscription_id = subscriptions.subscription_id; + """)) + + +def downgrade() -> None: + pass