Coverage for /usr/local/lib/python3.12/site-packages/prefect/server/database/_migrations/versions/sqlite/2024_04_10_104304_824e9edafa60_adds_events_tables.py: 62%

37 statements  

« prev     ^ index     » next       coverage.py v7.10.6, created at 2025-12-05 13:38 +0000

1"""Add `events` and `event_resources` tables 

2 

3Revision ID: 824e9edafa60 

4Revises: 2b6c2b548f95 

5Create Date: 2024-04-10 10:43:04.801473 

6 

7""" 

8 

9import sqlalchemy as sa 1a

10from alembic import op 1a

11 

12import prefect 1a

13 

14# revision identifiers, used by Alembic. 

15revision = "824e9edafa60" 1a

16down_revision = "2b6c2b548f95" 1a

17branch_labels = None 1a

18depends_on = None 1a

19 

20 

21def upgrade(): 1a

22 op.create_table( 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: 1a

56 batch_op.create_index( 1a

57 "ix_event_resources__resource_id__occurred", 

58 ["resource_id", "occurred"], 

59 unique=False, 

60 ) 

61 batch_op.create_index( 1a

62 batch_op.f("ix_event_resources__updated"), ["updated"], unique=False 

63 ) 

64 

65 op.create_table( 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: 1a

130 batch_op.create_index("ix_events__event__id", ["event", "id"], unique=False) 1a

131 batch_op.create_index( 1a

132 "ix_events__event_occurred_id", ["event", "occurred", "id"], unique=False 

133 ) 

134 batch_op.create_index( 1a

135 "ix_events__event_related_occurred", 

136 ["event", "related", "occurred"], 

137 unique=False, 

138 ) 

139 batch_op.create_index( 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) 1a

145 batch_op.create_index( 1a

146 "ix_events__occurred_id", ["occurred", "id"], unique=False 

147 ) 

148 batch_op.create_index( 1a

149 "ix_events__related_resource_ids", ["related_resource_ids"], unique=False 

150 ) 

151 batch_op.create_index( 1a

152 batch_op.f("ix_events__updated"), ["updated"], unique=False 

153 ) 

154 

155 

156def downgrade(): 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")