1 """Add `events` and `event_resources` tables
2
3 Revision ID: 824e9edafa60
4 Revises: 2b6c2b548f95
5 Create Date: 2024-04-10 10:43:04.801473
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 = "824e9edafa60" 1 ctx 1a
16 down_revision = "2b6c2b548f95" 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 "event_resources" ,
24 sa . Column (
25 "occurred" ,
26 prefect . server . utilities . database . Timestamp ( timezone = True ) ,
27 nullable = False ,
28 ) ,
29 sa . Column ( "resource_id" , sa . Text ( ) , nullable = False ) ,
30 sa . Column ( "resource_role" , sa . Text ( ) , nullable = False ) ,
31 sa . Column ( "resource" , sa . JSON ( ) , nullable = False ) ,
32 sa . Column ( "event_id" , prefect . server . utilities . database . UUID ( ) , nullable = False ) ,
33 sa . Column (
34 "id" ,
35 prefect . server . utilities . database . UUID ( ) ,
36 server_default = sa . text (
37 "(\n (\n lower(hex(randomblob(4)))\n || '-'\n || lower(hex(randomblob(2)))\n || '-4'\n || substr(lower(hex(randomblob(2))),2)\n || '-'\n || substr('89ab',abs(random()) % 4 + 1, 1)\n || substr(lower(hex(randomblob(2))),2)\n || '-'\n || lower(hex(randomblob(6)))\n )\n )"
38 ) ,
39 nullable = False ,
40 ) ,
41 sa . Column (
42 "created" ,
43 prefect . server . utilities . database . Timestamp ( timezone = True ) ,
44 server_default = sa . text ( "(strftime('%Y-%m-%d %H:%M:%f000', 'now'))" ) ,
45 nullable = False ,
46 ) ,
47 sa . Column (
48 "updated" ,
49 prefect . server . utilities . database . Timestamp ( timezone = True ) ,
50 server_default = sa . text ( "(strftime('%Y-%m-%d %H:%M:%f000', 'now'))" ) ,
51 nullable = False ,
52 ) ,
53 sa . PrimaryKeyConstraint ( "id" , name = op . f ( "pk_event_resources" ) ) ,
54 )
55 with op . batch_alter_table ( "event_resources" , schema = None ) as batch_op : 1 ctx 1a
56 batch_op . create_index ( 1 ctx 1a
57 "ix_event_resources__resource_id__occurred" ,
58 [ "resource_id" , "occurred" ] ,
59 unique = False ,
60 )
61 batch_op . create_index ( 1 ctx 1a
62 batch_op . f ( "ix_event_resources__updated" ) , [ "updated" ] , unique = False
63 )
64
65 op . create_table ( 1 ctx 1a
66 "events" ,
67 sa . Column (
68 "occurred" ,
69 prefect . server . utilities . database . Timestamp ( timezone = True ) ,
70 nullable = False ,
71 ) ,
72 sa . Column ( "event" , sa . Text ( ) , nullable = False ) ,
73 sa . Column ( "resource_id" , sa . Text ( ) , nullable = False ) ,
74 sa . Column (
75 "resource" ,
76 prefect . server . utilities . database . JSON ( astext_type = sa . Text ( ) ) ,
77 nullable = False ,
78 ) ,
79 sa . Column (
80 "related_resource_ids" ,
81 prefect . server . utilities . database . JSON ( astext_type = sa . Text ( ) ) ,
82 server_default = "[]" ,
83 nullable = False ,
84 ) ,
85 sa . Column (
86 "related" ,
87 prefect . server . utilities . database . JSON ( astext_type = sa . Text ( ) ) ,
88 server_default = "[]" ,
89 nullable = False ,
90 ) ,
91 sa . Column (
92 "payload" ,
93 prefect . server . utilities . database . JSON ( astext_type = sa . Text ( ) ) ,
94 nullable = False ,
95 ) ,
96 sa . Column (
97 "received" ,
98 prefect . server . utilities . database . Timestamp ( timezone = True ) ,
99 nullable = False ,
100 ) ,
101 sa . Column (
102 "recorded" ,
103 prefect . server . utilities . database . Timestamp ( timezone = True ) ,
104 nullable = False ,
105 ) ,
106 sa . Column ( "follows" , prefect . server . utilities . database . UUID ( ) , nullable = True ) ,
107 sa . Column (
108 "id" ,
109 prefect . server . utilities . database . UUID ( ) ,
110 server_default = sa . text (
111 "(\n (\n lower(hex(randomblob(4)))\n || '-'\n || lower(hex(randomblob(2)))\n || '-4'\n || substr(lower(hex(randomblob(2))),2)\n || '-'\n || substr('89ab',abs(random()) % 4 + 1, 1)\n || substr(lower(hex(randomblob(2))),2)\n || '-'\n || lower(hex(randomblob(6)))\n )\n )"
112 ) ,
113 nullable = False ,
114 ) ,
115 sa . Column (
116 "created" ,
117 prefect . server . utilities . database . Timestamp ( timezone = True ) ,
118 server_default = sa . text ( "(strftime('%Y-%m-%d %H:%M:%f000', 'now'))" ) ,
119 nullable = False ,
120 ) ,
121 sa . Column (
122 "updated" ,
123 prefect . server . utilities . database . Timestamp ( timezone = True ) ,
124 server_default = sa . text ( "(strftime('%Y-%m-%d %H:%M:%f000', 'now'))" ) ,
125 nullable = False ,
126 ) ,
127 sa . PrimaryKeyConstraint ( "id" , name = op . f ( "pk_events" ) ) ,
128 )
129 with op . batch_alter_table ( "events" , schema = None ) as batch_op : 1 ctx 1a
130 batch_op . create_index ( "ix_events__event__id" , [ "event" , "id" ] , unique = False ) 1 ctx 1a
131 batch_op . create_index ( 1 ctx 1a
132 "ix_events__event_occurred_id" , [ "event" , "occurred" , "id" ] , unique = False
133 )
134 batch_op . create_index ( 1 ctx 1a
135 "ix_events__event_related_occurred" ,
136 [ "event" , "related" , "occurred" ] ,
137 unique = False ,
138 )
139 batch_op . create_index ( 1 ctx 1a
140 "ix_events__event_resource_id_occurred" ,
141 [ "event" , "resource_id" , "occurred" ] ,
142 unique = False ,
143 )
144 batch_op . create_index ( "ix_events__occurred" , [ "occurred" ] , unique = False ) 1 ctx 1a
145 batch_op . create_index ( 1 ctx 1a
146 "ix_events__occurred_id" , [ "occurred" , "id" ] , unique = False
147 )
148 batch_op . create_index ( 1 ctx 1a
149 "ix_events__related_resource_ids" , [ "related_resource_ids" ] , unique = False
150 )
151 batch_op . create_index ( 1 ctx 1a
152 batch_op . f ( "ix_events__updated" ) , [ "updated" ] , unique = False
153 )
154
155
156 def downgrade ( ) : 1 ctx 1a
157 with op . batch_alter_table ( "events" , schema = None ) as batch_op :
158 batch_op . drop_index ( batch_op . f ( "ix_events__updated" ) )
159 batch_op . drop_index ( "ix_events__related_resource_ids" )
160 batch_op . drop_index ( "ix_events__occurred_id" )
161 batch_op . drop_index ( "ix_events__occurred" )
162 batch_op . drop_index ( "ix_events__event_resource_id_occurred" )
163 batch_op . drop_index ( "ix_events__event_related_occurred" )
164 batch_op . drop_index ( "ix_events__event_occurred_id" )
165 batch_op . drop_index ( "ix_events__event__id" )
166
167 op . drop_table ( "events" )
168 with op . batch_alter_table ( "event_resources" , schema = None ) as batch_op :
169 batch_op . drop_index ( batch_op . f ( "ix_event_resources__updated" ) )
170 batch_op . drop_index ( "ix_event_resources__resource_id__occurred" )
171
172 op . drop_table ( "event_resources" )