1 """Add deployment to global concurrency limit FK
2
3 Revision ID: 4ad4658cbefe
4 Revises: 7d6350aea855
5 Create Date: 2024-09-16 16:27:19.451150
6
7 """
8
9 import sqlalchemy as sa 1 ctx 1a
10 from alembic import op 1 ctx 1a
11
12 import prefect 1 ctx 1a
13
14 # revision identifiers, used by Alembic.
15 revision = "4ad4658cbefe" 1 ctx 1a
16 down_revision = "7d6350aea855" 1 ctx 1a
17 branch_labels = None 1 ctx 1a
18 depends_on = None 1 ctx 1a
19
20
21 def upgrade ( ) : 1 ctx 1a
22 with op . batch_alter_table ( "deployment" , schema = None ) as batch_op : 1 ctx 1a
23 batch_op . add_column ( 1 ctx 1a
24 sa . Column (
25 "concurrency_limit_id" ,
26 prefect . server . utilities . database . UUID ( ) ,
27 nullable = True ,
28 )
29 )
30 batch_op . create_foreign_key ( 1 ctx 1a
31 batch_op . f ( "fk_deployment__concurrency_limit_id__concurrency_limit_v2" ) ,
32 "concurrency_limit_v2" ,
33 [ "concurrency_limit_id" ] ,
34 [ "id" ] ,
35 ondelete = "SET NULL" ,
36 )
37
38 # migrate existing data
39 sql = sa . text ( 1 ctx 1a
40 """
41 UPDATE deployment
42 SET concurrency_limit_id = (
43 SELECT l.id
44 FROM concurrency_limit_v2 l
45 WHERE l.name = 'deployment:' || deployment.id
46 )
47 WHERE EXISTS (
48 SELECT 1
49 FROM concurrency_limit_v2 l
50 WHERE l.name = 'deployment:' || deployment.id
51 );
52 """
53 )
54 op . execute ( sql ) 1 ctx 1a
55
56
57 def downgrade ( ) : 1 ctx 1a
58 with op . batch_alter_table ( "deployment" , schema = None ) as batch_op :
59 batch_op . drop_constraint (
60 batch_op . f ( "fk_deployment__concurrency_limit_id__concurrency_limit_v2" ) ,
61 type_ = "foreignkey" ,
62 )
63 batch_op . drop_column ( "concurrency_limit_id" )