1 """Create new deployment version table
2
3 Revision ID: bbca16f6f218
4 Revises: 3457c6ca2360
5 Create Date: 2025-03-19 14:50:18.927635
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 = "bbca16f6f218" 1 ctx 1a
16 down_revision = "3457c6ca2360" 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 op . create_table ( 1 ctx 1a
23 "deployment_version" ,
24 sa . Column (
25 "deployment_id" ,
26 prefect . server . utilities . database . UUID ( ) ,
27 nullable = False ,
28 ) ,
29 sa . Column ( "branch" , sa . String ( ) , nullable = True ) ,
30 sa . Column (
31 "version_info" ,
32 prefect . server . utilities . database . JSON ( astext_type = sa . Text ( ) ) ,
33 server_default = "{}" ,
34 nullable = False ,
35 ) ,
36 sa . Column ( "description" , sa . Text ( ) , nullable = True ) ,
37 sa . Column (
38 "tags" ,
39 prefect . server . utilities . database . JSON ( astext_type = sa . Text ( ) ) ,
40 server_default = "[]" ,
41 nullable = False ,
42 ) ,
43 sa . Column (
44 "labels" ,
45 prefect . server . utilities . database . JSON ( astext_type = sa . Text ( ) ) ,
46 nullable = True ,
47 ) ,
48 sa . Column ( "entrypoint" , sa . String ( ) , nullable = True ) ,
49 sa . Column (
50 "pull_steps" ,
51 prefect . server . utilities . database . JSON ( astext_type = sa . Text ( ) ) ,
52 nullable = True ,
53 ) ,
54 sa . Column (
55 "parameters" ,
56 prefect . server . utilities . database . JSON ( astext_type = sa . Text ( ) ) ,
57 server_default = "{}" ,
58 nullable = False ,
59 ) ,
60 sa . Column (
61 "parameter_openapi_schema" ,
62 prefect . server . utilities . database . JSON ( astext_type = sa . Text ( ) ) ,
63 nullable = True ,
64 ) ,
65 sa . Column (
66 "enforce_parameter_schema" , sa . Boolean ( ) , server_default = "0" , nullable = False
67 ) ,
68 sa . Column (
69 "work_queue_id" ,
70 prefect . server . utilities . database . UUID ( ) ,
71 nullable = True ,
72 ) ,
73 sa . Column ( "work_queue_name" , sa . String ( ) , nullable = True ) ,
74 sa . Column (
75 "infra_overrides" ,
76 prefect . server . utilities . database . JSON ( astext_type = sa . Text ( ) ) ,
77 server_default = "{}" ,
78 nullable = False ,
79 ) ,
80 sa . Column (
81 "id" ,
82 prefect . server . utilities . database . UUID ( ) ,
83 server_default = sa . text ( "(GEN_RANDOM_UUID())" ) ,
84 nullable = False ,
85 ) ,
86 sa . Column (
87 "created" ,
88 prefect . server . utilities . database . Timestamp ( timezone = True ) ,
89 server_default = sa . text ( "CURRENT_TIMESTAMP" ) ,
90 nullable = False ,
91 ) ,
92 sa . Column (
93 "updated" ,
94 prefect . server . utilities . database . Timestamp ( timezone = True ) ,
95 server_default = sa . text ( "CURRENT_TIMESTAMP" ) ,
96 nullable = False ,
97 ) ,
98 sa . ForeignKeyConstraint (
99 [ "deployment_id" ] ,
100 [ "deployment.id" ] ,
101 name = op . f ( "fk_deployment_version__deployment_id__deployment" ) ,
102 ondelete = "CASCADE" ,
103 ) ,
104 sa . ForeignKeyConstraint (
105 [ "work_queue_id" ] ,
106 [ "work_queue.id" ] ,
107 name = op . f ( "fk_deployment_version__work_queue_id__work_queue" ) ,
108 ondelete = "SET NULL" ,
109 ) ,
110 sa . PrimaryKeyConstraint ( "id" , name = op . f ( "pk_deployment_version" ) ) ,
111 )
112 op . create_index ( 1 ctx 1a
113 op . f ( "ix_deployment_version__deployment_id" ) ,
114 "deployment_version" ,
115 [ "deployment_id" ] ,
116 unique = False ,
117 )
118 op . create_index ( 1 ctx 1a
119 op . f ( "ix_deployment_version__updated" ) ,
120 "deployment_version" ,
121 [ "updated" ] ,
122 unique = False ,
123 )
124 op . create_index ( 1 ctx 1a
125 op . f ( "ix_deployment_version__work_queue_id" ) ,
126 "deployment_version" ,
127 [ "work_queue_id" ] ,
128 unique = False ,
129 )
130 op . create_index ( 1 ctx 1a
131 op . f ( "ix_deployment_version__work_queue_name" ) ,
132 "deployment_version" ,
133 [ "work_queue_name" ] ,
134 unique = False ,
135 )
136 op . create_index ( 1 ctx 1a
137 "uq_deployment_version__deployment__branch" ,
138 "deployment_version" ,
139 [ "deployment_id" , "branch" ] ,
140 unique = True ,
141 )
142
143 ## alter deployment table to store references to new table
144 op . add_column ( 1 ctx 1a
145 "deployment" ,
146 sa . Column (
147 "version_id" ,
148 prefect . server . utilities . database . UUID ( ) ,
149 nullable = True ,
150 ) ,
151 )
152 op . create_index ( 1 ctx 1a
153 op . f ( "ix_deployment__version_id" ) ,
154 "deployment" ,
155 [ "version_id" ] ,
156 unique = False ,
157 )
158
159
160 def downgrade ( ) : 1 ctx 1a
161 with op . batch_alter_table ( "deployment_version" , schema = None ) as batch_op :
162 batch_op . drop_index ( "uq_deployment_version__deployment__branch" )
163 batch_op . drop_index ( batch_op . f ( "ix_deployment_version__work_queue_name" ) )
164 batch_op . drop_index ( batch_op . f ( "ix_deployment_version__work_queue_id" ) )
165 batch_op . drop_index ( batch_op . f ( "ix_deployment_version__updated" ) )
166 batch_op . drop_index ( batch_op . f ( "ix_deployment_version__deployment_id" ) )
167
168 # deployment table changes
169 op . drop_index ( op . f ( "ix_deployment__version_id" ) , table_name = "deployment" )
170 op . drop_column ( "deployment" , "version_id" )
171
172 op . drop_table ( "deployment_version" )