gabriel / musehub public
0001_consolidated_schema.py python
832 lines 54.9 KB
Raw
sha256:a34090cc4a394a78bd72cbbe34b08cc59525141e19135b6c0ab154f10611b9ef debug(push/stream): instrument O-frame decode path with INF… Sonnet 4.6 patch 121 days ago
1 """Consolidated schema — single migration replacing the previous chain.
2
3 All tables, indexes, and constraints generated from the current ORM models.
4 """
5 from __future__ import annotations
6
7 from alembic import op
8 import sqlalchemy as sa
9
10
11 revision = "0001"
12 down_revision = None
13 branch_labels = None
14 depends_on = None
15
16
17 def upgrade() -> None:
18 # ### commands auto generated by Alembic - please adjust! ###
19 op.create_table('muse_objects',
20 sa.Column('object_id', sa.String(length=128), nullable=False),
21 sa.Column('size_bytes', sa.Integer(), nullable=False),
22 sa.Column('created_at', sa.DateTime(timezone=True), nullable=False),
23 sa.PrimaryKeyConstraint('object_id')
24 )
25 op.create_table('muse_snapshots',
26 sa.Column('snapshot_id', sa.String(length=128), nullable=False),
27 sa.Column('manifest', sa.JSON(), nullable=False),
28 sa.Column('created_at', sa.DateTime(timezone=True), nullable=False),
29 sa.PrimaryKeyConstraint('snapshot_id')
30 )
31 op.create_table('musehub_attestations',
32 sa.Column('attestation_id', sa.String(length=128), nullable=False),
33 sa.Column('attester', sa.String(length=64), nullable=False),
34 sa.Column('subject', sa.String(length=64), nullable=False),
35 sa.Column('claim', sa.Text(), nullable=False),
36 sa.Column('signature', sa.String(length=128), nullable=False),
37 sa.Column('attester_public_key', sa.String(length=128), nullable=False),
38 sa.Column('issued_at', sa.DateTime(timezone=True), nullable=False),
39 sa.Column('revoked_at', sa.DateTime(timezone=True), nullable=True),
40 sa.PrimaryKeyConstraint('attestation_id')
41 )
42 op.create_index('ix_musehub_attestations_attester', 'musehub_attestations', ['attester'], unique=False)
43 op.create_index('ix_musehub_attestations_subject', 'musehub_attestations', ['subject'], unique=False)
44 op.create_table('musehub_auth_challenges',
45 sa.Column('challenge_id', sa.String(length=36), nullable=False),
46 sa.Column('nonce_hex', sa.String(length=64), nullable=False),
47 sa.Column('fingerprint', sa.String(length=71), nullable=False),
48 sa.Column('algorithm', sa.String(length=32), nullable=False),
49 sa.Column('expires_at', sa.DateTime(timezone=True), nullable=False),
50 sa.PrimaryKeyConstraint('challenge_id'),
51 sa.UniqueConstraint('nonce_hex', name='uq_musehub_auth_challenges_nonce_hex')
52 )
53 op.create_index('ix_musehub_auth_challenges_expires_at', 'musehub_auth_challenges', ['expires_at'], unique=False)
54 op.create_table('musehub_domain_installs',
55 sa.Column('install_id', sa.String(length=36), nullable=False),
56 sa.Column('user_id', sa.String(length=128), nullable=False),
57 sa.Column('domain_id', sa.String(length=128), nullable=False),
58 sa.Column('created_at', sa.DateTime(timezone=True), nullable=False),
59 sa.PrimaryKeyConstraint('install_id'),
60 sa.UniqueConstraint('user_id', 'domain_id', name='uq_musehub_domain_installs')
61 )
62 op.create_index(op.f('ix_musehub_domain_installs_domain_id'), 'musehub_domain_installs', ['domain_id'], unique=False)
63 op.create_index(op.f('ix_musehub_domain_installs_user_id'), 'musehub_domain_installs', ['user_id'], unique=False)
64 op.create_table('musehub_domains',
65 sa.Column('domain_id', sa.String(length=128), nullable=False),
66 sa.Column('author_user_id', sa.String(length=128), nullable=True),
67 sa.Column('author_slug', sa.String(length=64), nullable=False),
68 sa.Column('slug', sa.String(length=64), nullable=False),
69 sa.Column('display_name', sa.String(length=255), nullable=False),
70 sa.Column('description', sa.Text(), nullable=False),
71 sa.Column('version', sa.String(length=32), nullable=False),
72 sa.Column('manifest_hash', sa.String(length=128), nullable=False),
73 sa.Column('capabilities', sa.JSON(), nullable=False),
74 sa.Column('viewer_type', sa.String(length=64), nullable=False),
75 sa.Column('install_count', sa.Integer(), nullable=False),
76 sa.Column('is_verified', sa.Boolean(), nullable=False),
77 sa.Column('is_deprecated', sa.Boolean(), nullable=False),
78 sa.Column('created_at', sa.DateTime(timezone=True), nullable=False),
79 sa.Column('updated_at', sa.DateTime(timezone=True), nullable=False),
80 sa.PrimaryKeyConstraint('domain_id'),
81 sa.UniqueConstraint('author_slug', 'slug', name='uq_musehub_domains_author_slug')
82 )
83 op.create_index(op.f('ix_musehub_domains_author_slug'), 'musehub_domains', ['author_slug'], unique=False)
84 op.create_index(op.f('ix_musehub_domains_author_user_id'), 'musehub_domains', ['author_user_id'], unique=False)
85 op.create_index(op.f('ix_musehub_domains_slug'), 'musehub_domains', ['slug'], unique=False)
86 op.create_table('musehub_identities',
87 sa.Column('identity_id', sa.String(length=128), nullable=False),
88 sa.Column('handle', sa.String(length=64), nullable=False),
89 sa.Column('identity_type', sa.String(length=16), nullable=False),
90 sa.Column('display_name', sa.String(length=255), nullable=True),
91 sa.Column('bio', sa.Text(), nullable=True),
92 sa.Column('avatar_url', sa.String(length=2048), nullable=True),
93 sa.Column('website_url', sa.String(length=2048), nullable=True),
94 sa.Column('email', sa.String(length=255), nullable=True),
95 sa.Column('agent_model', sa.String(length=255), nullable=True),
96 sa.Column('agent_capabilities', sa.JSON(), nullable=False),
97 sa.Column('location', sa.String(length=255), nullable=True),
98 sa.Column('social_url', sa.String(length=2048), nullable=True),
99 sa.Column('is_verified', sa.Boolean(), nullable=False),
100 sa.Column('cc_license', sa.String(length=50), nullable=True),
101 sa.Column('pinned_repo_ids', sa.JSON(), nullable=False),
102 sa.Column('created_at', sa.DateTime(timezone=True), nullable=False),
103 sa.Column('updated_at', sa.DateTime(timezone=True), nullable=False),
104 sa.Column('deleted_at', sa.DateTime(timezone=True), nullable=True),
105 sa.Column('spawned_by', sa.String(length=64), nullable=True),
106 sa.Column('scope', sa.JSON(), nullable=True),
107 sa.Column('expires_at', sa.DateTime(timezone=True), nullable=True),
108 sa.Column('tos_accepted_at', sa.DateTime(timezone=True), nullable=True),
109 sa.Column('tos_version', sa.String(length=16), nullable=True),
110 sa.Column('avax_address', sa.String(length=64), nullable=True),
111 sa.Column('org_members', sa.JSON(), nullable=True),
112 sa.Column('org_quorum', sa.Integer(), nullable=True),
113 sa.Column('org_treasury_address', sa.String(length=64), nullable=True),
114 sa.PrimaryKeyConstraint('identity_id'),
115 sa.UniqueConstraint('handle', name='uq_musehub_identities_handle')
116 )
117 op.create_index(op.f('ix_musehub_identities_email'), 'musehub_identities', ['email'], unique=False)
118 op.create_index(op.f('ix_musehub_identities_expires_at'), 'musehub_identities', ['expires_at'], unique=False)
119 op.create_index(op.f('ix_musehub_identities_handle'), 'musehub_identities', ['handle'], unique=False)
120 op.create_index(op.f('ix_musehub_identities_is_verified'), 'musehub_identities', ['is_verified'], unique=False)
121 op.create_index(op.f('ix_musehub_identities_spawned_by'), 'musehub_identities', ['spawned_by'], unique=False)
122 op.create_table('musehub_mpay_claims',
123 sa.Column('claim_id', sa.String(length=128), nullable=False),
124 sa.Column('sender', sa.String(length=64), nullable=False),
125 sa.Column('recipient', sa.String(length=64), nullable=False),
126 sa.Column('amount_nano', sa.Integer(), nullable=False),
127 sa.Column('nonce_hex', sa.String(length=64), nullable=False),
128 sa.Column('signature', sa.String(length=128), nullable=False),
129 sa.Column('sender_public_key', sa.String(length=128), nullable=False),
130 sa.Column('memo', sa.String(length=500), nullable=True),
131 sa.Column('created_at', sa.DateTime(timezone=True), nullable=False),
132 sa.Column('confirmed_at', sa.DateTime(timezone=True), nullable=True),
133 sa.Column('voided_at', sa.DateTime(timezone=True), nullable=True),
134 sa.PrimaryKeyConstraint('claim_id'),
135 sa.UniqueConstraint('nonce_hex'),
136 sa.UniqueConstraint('nonce_hex', name='uq_musehub_mpay_claims_nonce')
137 )
138 op.create_index('ix_musehub_mpay_claims_recipient', 'musehub_mpay_claims', ['recipient'], unique=False)
139 op.create_index('ix_musehub_mpay_claims_sender', 'musehub_mpay_claims', ['sender'], unique=False)
140 op.create_table('musehub_objects',
141 sa.Column('object_id', sa.String(length=128), nullable=False),
142 sa.Column('path', sa.String(length=1024), nullable=False),
143 sa.Column('size_bytes', sa.Integer(), nullable=False),
144 sa.Column('disk_path', sa.String(length=2048), nullable=False),
145 sa.Column('storage_uri', sa.String(length=2048), nullable=True),
146 sa.Column('content_cache', sa.LargeBinary(), nullable=True),
147 sa.Column('created_at', sa.DateTime(timezone=True), nullable=False),
148 sa.Column('deleted_at', sa.DateTime(timezone=True), nullable=True),
149 sa.PrimaryKeyConstraint('object_id')
150 )
151 op.create_table('musehub_profile_snapshots',
152 sa.Column('handle', sa.String(length=64), nullable=False),
153 sa.Column('data_json', sa.Text(), nullable=False),
154 sa.Column('computed_at', sa.DateTime(timezone=True), nullable=False),
155 sa.Column('is_stale', sa.Boolean(), nullable=False),
156 sa.PrimaryKeyConstraint('handle')
157 )
158 op.create_table('musehub_repos',
159 sa.Column('repo_id', sa.String(length=128), nullable=False),
160 sa.Column('name', sa.String(length=255), nullable=False),
161 sa.Column('owner', sa.String(length=64), nullable=False),
162 sa.Column('slug', sa.String(length=64), nullable=False),
163 sa.Column('visibility', sa.String(length=20), nullable=False),
164 sa.Column('owner_user_id', sa.String(length=128), nullable=False),
165 sa.Column('description', sa.Text(), nullable=False),
166 sa.Column('tags', sa.JSON(), nullable=False),
167 sa.Column('domain_id', sa.String(length=128), nullable=True),
168 sa.Column('domain_meta', sa.JSON(), nullable=False),
169 sa.Column('settings', sa.JSON(), nullable=True),
170 sa.Column('default_branch', sa.String(length=255), nullable=False),
171 sa.Column('pushed_at', sa.DateTime(timezone=True), nullable=True),
172 sa.Column('created_at', sa.DateTime(timezone=True), nullable=False),
173 sa.Column('updated_at', sa.DateTime(timezone=True), nullable=False),
174 sa.Column('training_opt_out', sa.Boolean(), nullable=False),
175 sa.PrimaryKeyConstraint('repo_id'),
176 sa.UniqueConstraint('owner', 'slug', name='uq_musehub_repos_owner_slug')
177 )
178 op.create_index(op.f('ix_musehub_repos_domain_id'), 'musehub_repos', ['domain_id'], unique=False)
179 op.create_index(op.f('ix_musehub_repos_owner'), 'musehub_repos', ['owner'], unique=False)
180 op.create_index(op.f('ix_musehub_repos_owner_user_id'), 'musehub_repos', ['owner_user_id'], unique=False)
181 op.create_index('ix_musehub_repos_owner_visibility', 'musehub_repos', ['owner', 'visibility'], unique=False)
182 op.create_index(op.f('ix_musehub_repos_slug'), 'musehub_repos', ['slug'], unique=False)
183 op.create_table('muse_commits',
184 sa.Column('commit_id', sa.String(length=128), nullable=False),
185 sa.Column('repo_id', sa.String(length=128), nullable=False),
186 sa.Column('branch', sa.String(length=255), nullable=False),
187 sa.Column('parent_commit_id', sa.String(length=128), nullable=True),
188 sa.Column('parent2_commit_id', sa.String(length=128), nullable=True),
189 sa.Column('snapshot_id', sa.String(length=128), nullable=False),
190 sa.Column('message', sa.Text(), nullable=False),
191 sa.Column('author', sa.String(length=255), nullable=False),
192 sa.Column('committed_at', sa.DateTime(timezone=True), nullable=False),
193 sa.Column('created_at', sa.DateTime(timezone=True), nullable=False),
194 sa.Column('commit_metadata', sa.JSON(), nullable=True),
195 sa.ForeignKeyConstraint(['snapshot_id'], ['muse_snapshots.snapshot_id'], ondelete='RESTRICT'),
196 sa.PrimaryKeyConstraint('commit_id')
197 )
198 op.create_index(op.f('ix_muse_commits_parent2_commit_id'), 'muse_commits', ['parent2_commit_id'], unique=False)
199 op.create_index(op.f('ix_muse_commits_parent_commit_id'), 'muse_commits', ['parent_commit_id'], unique=False)
200 op.create_index(op.f('ix_muse_commits_repo_id'), 'muse_commits', ['repo_id'], unique=False)
201 op.create_table('musehub_auth_keys',
202 sa.Column('key_id', sa.String(length=128), nullable=False),
203 sa.Column('identity_id', sa.String(length=128), nullable=False),
204 sa.Column('algorithm', sa.String(length=32), nullable=False),
205 sa.Column('public_key_b64', sa.Text(), nullable=False),
206 sa.Column('fingerprint', sa.String(length=71), nullable=False),
207 sa.Column('label', sa.String(length=255), nullable=False),
208 sa.Column('created_at', sa.DateTime(timezone=True), nullable=False),
209 sa.Column('last_used_at', sa.DateTime(timezone=True), nullable=True),
210 sa.ForeignKeyConstraint(['identity_id'], ['musehub_identities.identity_id'], ondelete='CASCADE'),
211 sa.PrimaryKeyConstraint('key_id'),
212 sa.UniqueConstraint('fingerprint', name='uq_musehub_auth_keys_fingerprint')
213 )
214 op.create_index('ix_musehub_auth_keys_algorithm', 'musehub_auth_keys', ['algorithm'], unique=False)
215 op.create_index('ix_musehub_auth_keys_identity_id', 'musehub_auth_keys', ['identity_id'], unique=False)
216 op.create_table('musehub_background_jobs',
217 sa.Column('job_id', sa.String(length=36), nullable=False),
218 sa.Column('repo_id', sa.String(length=128), nullable=False),
219 sa.Column('job_type', sa.String(length=64), nullable=False),
220 sa.Column('payload', sa.JSON(), nullable=False),
221 sa.Column('status', sa.String(length=16), nullable=False),
222 sa.Column('created_at', sa.DateTime(timezone=True), nullable=False),
223 sa.Column('claimed_at', sa.DateTime(timezone=True), nullable=True),
224 sa.Column('done_at', sa.DateTime(timezone=True), nullable=True),
225 sa.Column('attempt', sa.Integer(), nullable=False),
226 sa.Column('error', sa.Text(), nullable=True),
227 sa.ForeignKeyConstraint(['repo_id'], ['musehub_repos.repo_id'], ondelete='CASCADE'),
228 sa.PrimaryKeyConstraint('job_id')
229 )
230 op.create_index(op.f('ix_musehub_background_jobs_repo_id'), 'musehub_background_jobs', ['repo_id'], unique=False)
231 op.create_index(op.f('ix_musehub_background_jobs_status'), 'musehub_background_jobs', ['status'], unique=False)
232 op.create_index('ix_musehub_background_jobs_status_created', 'musehub_background_jobs', ['status', 'created_at'], unique=False)
233 op.create_table('musehub_branches',
234 sa.Column('branch_id', sa.String(length=128), nullable=False),
235 sa.Column('repo_id', sa.String(length=128), nullable=False),
236 sa.Column('name', sa.String(length=255), nullable=False),
237 sa.Column('head_commit_id', sa.String(length=128), nullable=True),
238 sa.ForeignKeyConstraint(['repo_id'], ['musehub_repos.repo_id'], ondelete='CASCADE'),
239 sa.PrimaryKeyConstraint('branch_id')
240 )
241 op.create_index(op.f('ix_musehub_branches_repo_id'), 'musehub_branches', ['repo_id'], unique=False)
242 op.create_table('musehub_collaborators',
243 sa.Column('id', sa.String(length=128), nullable=False),
244 sa.Column('repo_id', sa.String(length=128), nullable=False),
245 sa.Column('identity_handle', sa.String(length=64), nullable=False),
246 sa.Column('permission', sa.String(length=20), nullable=False),
247 sa.Column('invited_by_handle', sa.String(length=64), nullable=True),
248 sa.Column('invited_at', sa.DateTime(timezone=True), nullable=False),
249 sa.Column('accepted_at', sa.DateTime(timezone=True), nullable=True),
250 sa.ForeignKeyConstraint(['repo_id'], ['musehub_repos.repo_id'], ondelete='CASCADE'),
251 sa.PrimaryKeyConstraint('id'),
252 sa.UniqueConstraint('repo_id', 'identity_handle', name='uq_musehub_collaborators_repo_identity')
253 )
254 op.create_index('ix_musehub_collaborators_identity_handle', 'musehub_collaborators', ['identity_handle'], unique=False)
255 op.create_index('ix_musehub_collaborators_repo_id', 'musehub_collaborators', ['repo_id'], unique=False)
256 op.create_table('musehub_commits',
257 sa.Column('commit_id', sa.String(length=128), nullable=False),
258 sa.Column('repo_id', sa.String(length=128), nullable=False),
259 sa.Column('branch', sa.String(length=255), nullable=False),
260 sa.Column('parent_ids', sa.JSON(), nullable=False),
261 sa.Column('message', sa.Text(), nullable=False),
262 sa.Column('author', sa.String(length=255), nullable=False),
263 sa.Column('timestamp', sa.DateTime(timezone=True), nullable=False),
264 sa.Column('snapshot_id', sa.String(length=128), nullable=True),
265 sa.Column('commit_meta', sa.JSON(), nullable=False),
266 sa.Column('created_at', sa.DateTime(timezone=True), nullable=False),
267 sa.ForeignKeyConstraint(['repo_id'], ['musehub_repos.repo_id'], ondelete='CASCADE'),
268 sa.PrimaryKeyConstraint('commit_id')
269 )
270 op.create_index(op.f('ix_musehub_commits_branch'), 'musehub_commits', ['branch'], unique=False)
271 op.create_index('ix_musehub_commits_repo_branch', 'musehub_commits', ['repo_id', 'branch'], unique=False)
272 op.create_index(op.f('ix_musehub_commits_repo_id'), 'musehub_commits', ['repo_id'], unique=False)
273 op.create_index('ix_musehub_commits_repo_timestamp', 'musehub_commits', ['repo_id', 'timestamp'], unique=False)
274 op.create_index(op.f('ix_musehub_commits_timestamp'), 'musehub_commits', ['timestamp'], unique=False)
275 op.create_table('musehub_coord_records',
276 sa.Column('id', sa.Integer(), autoincrement=True, nullable=False),
277 sa.Column('repo_id', sa.String(length=128), nullable=False),
278 sa.Column('kind', sa.String(length=32), nullable=False),
279 sa.Column('record_uuid', sa.String(length=36), nullable=False),
280 sa.Column('run_id', sa.String(length=255), nullable=False),
281 sa.Column('payload', sa.JSON(), nullable=False),
282 sa.Column('created_at', sa.DateTime(timezone=True), nullable=False),
283 sa.Column('expires_at', sa.DateTime(timezone=True), nullable=True),
284 sa.ForeignKeyConstraint(['repo_id'], ['musehub_repos.repo_id'], ondelete='CASCADE'),
285 sa.PrimaryKeyConstraint('id'),
286 sa.UniqueConstraint('repo_id', 'kind', 'record_uuid', name='uq_coord_repo_kind_uuid')
287 )
288 op.create_index('ix_coord_repo_id_cursor', 'musehub_coord_records', ['repo_id', 'id'], unique=False)
289 op.create_index('ix_coord_repo_kind_id', 'musehub_coord_records', ['repo_id', 'kind', 'id'], unique=False)
290 op.create_index(op.f('ix_musehub_coord_records_repo_id'), 'musehub_coord_records', ['repo_id'], unique=False)
291 op.create_table('musehub_coord_reservations',
292 sa.Column('reservation_id', sa.String(length=128), nullable=False),
293 sa.Column('repo_id', sa.String(length=128), nullable=False),
294 sa.Column('symbol_address', sa.String(length=512), nullable=False),
295 sa.Column('agent_id', sa.String(length=255), nullable=False),
296 sa.Column('agent_model_id', sa.String(length=255), nullable=False),
297 sa.Column('ttl_s', sa.Integer(), nullable=False),
298 sa.Column('created_at', sa.DateTime(timezone=True), nullable=False),
299 sa.Column('expires_at', sa.DateTime(timezone=True), nullable=False),
300 sa.Column('released_at', sa.DateTime(timezone=True), nullable=True),
301 sa.ForeignKeyConstraint(['repo_id'], ['musehub_repos.repo_id'], ondelete='CASCADE'),
302 sa.PrimaryKeyConstraint('reservation_id')
303 )
304 op.create_index(op.f('ix_musehub_coord_reservations_repo_id'), 'musehub_coord_reservations', ['repo_id'], unique=False)
305 op.create_table('musehub_coord_tasks',
306 sa.Column('task_id', sa.String(length=128), nullable=False),
307 sa.Column('repo_id', sa.String(length=128), nullable=False),
308 sa.Column('queue', sa.String(length=255), nullable=False),
309 sa.Column('priority', sa.Integer(), nullable=False),
310 sa.Column('payload', sa.JSON(), nullable=False),
311 sa.Column('status', sa.String(length=20), nullable=False),
312 sa.Column('claimed_by', sa.String(length=255), nullable=True),
313 sa.Column('claimed_at', sa.DateTime(timezone=True), nullable=True),
314 sa.Column('completed_at', sa.DateTime(timezone=True), nullable=True),
315 sa.Column('depends_on', sa.JSON(), nullable=False),
316 sa.Column('run_id', sa.String(length=255), nullable=True),
317 sa.Column('created_at', sa.DateTime(timezone=True), nullable=False),
318 sa.ForeignKeyConstraint(['repo_id'], ['musehub_repos.repo_id'], ondelete='CASCADE'),
319 sa.PrimaryKeyConstraint('task_id')
320 )
321 op.create_index('ix_coord_tasks_repo_priority', 'musehub_coord_tasks', ['repo_id', 'priority'], unique=False)
322 op.create_index('ix_coord_tasks_repo_queue_status', 'musehub_coord_tasks', ['repo_id', 'queue', 'status'], unique=False)
323 op.create_index(op.f('ix_musehub_coord_tasks_repo_id'), 'musehub_coord_tasks', ['repo_id'], unique=False)
324 op.create_index(op.f('ix_musehub_coord_tasks_status'), 'musehub_coord_tasks', ['status'], unique=False)
325 op.create_table('musehub_forks',
326 sa.Column('fork_id', sa.String(length=128), nullable=False),
327 sa.Column('source_repo_id', sa.String(length=128), nullable=False),
328 sa.Column('fork_repo_id', sa.String(length=128), nullable=False),
329 sa.Column('forked_by', sa.String(length=255), nullable=False),
330 sa.Column('created_at', sa.DateTime(timezone=True), nullable=False),
331 sa.ForeignKeyConstraint(['fork_repo_id'], ['musehub_repos.repo_id'], ondelete='CASCADE'),
332 sa.ForeignKeyConstraint(['source_repo_id'], ['musehub_repos.repo_id'], ondelete='CASCADE'),
333 sa.PrimaryKeyConstraint('fork_id'),
334 sa.UniqueConstraint('source_repo_id', 'forked_by', name='uq_musehub_forks')
335 )
336 op.create_index(op.f('ix_musehub_forks_fork_repo_id'), 'musehub_forks', ['fork_repo_id'], unique=False)
337 op.create_index(op.f('ix_musehub_forks_forked_by'), 'musehub_forks', ['forked_by'], unique=False)
338 op.create_index(op.f('ix_musehub_forks_source_repo_id'), 'musehub_forks', ['source_repo_id'], unique=False)
339 op.create_table('musehub_intel_results',
340 sa.Column('result_id', sa.String(length=128), nullable=False),
341 sa.Column('repo_id', sa.String(length=128), nullable=False),
342 sa.Column('intel_type', sa.String(length=128), nullable=False),
343 sa.Column('domain', sa.String(length=64), nullable=False),
344 sa.Column('ref', sa.String(length=128), nullable=False),
345 sa.Column('data_json', sa.Text(), nullable=False),
346 sa.Column('schema_version', sa.Integer(), nullable=False),
347 sa.Column('computed_at', sa.DateTime(timezone=True), nullable=False),
348 sa.ForeignKeyConstraint(['repo_id'], ['musehub_repos.repo_id'], ondelete='CASCADE'),
349 sa.PrimaryKeyConstraint('result_id'),
350 sa.UniqueConstraint('repo_id', 'intel_type', name='uq_musehub_intel_results_repo_type')
351 )
352 op.create_index(op.f('ix_musehub_intel_results_domain'), 'musehub_intel_results', ['domain'], unique=False)
353 op.create_index(op.f('ix_musehub_intel_results_intel_type'), 'musehub_intel_results', ['intel_type'], unique=False)
354 op.create_index(op.f('ix_musehub_intel_results_repo_id'), 'musehub_intel_results', ['repo_id'], unique=False)
355 op.create_index('ix_musehub_intel_results_repo_type', 'musehub_intel_results', ['repo_id', 'intel_type'], unique=False)
356 op.create_table('musehub_issues',
357 sa.Column('issue_id', sa.String(length=128), nullable=False),
358 sa.Column('repo_id', sa.String(length=128), nullable=False),
359 sa.Column('number', sa.Integer(), nullable=False),
360 sa.Column('title', sa.String(length=500), nullable=False),
361 sa.Column('body', sa.Text(), nullable=False),
362 sa.Column('state', sa.String(length=20), nullable=False),
363 sa.Column('labels', sa.JSON(), nullable=False),
364 sa.Column('symbol_anchors', sa.JSON(), nullable=False),
365 sa.Column('commit_anchors', sa.JSON(), nullable=False),
366 sa.Column('author', sa.String(length=255), nullable=False),
367 sa.Column('assignee', sa.String(length=255), nullable=True),
368 sa.Column('agent_id', sa.String(length=255), nullable=False),
369 sa.Column('model_id', sa.String(length=255), nullable=False),
370 sa.Column('created_at', sa.DateTime(timezone=True), nullable=False),
371 sa.Column('updated_at', sa.DateTime(timezone=True), nullable=False),
372 sa.ForeignKeyConstraint(['repo_id'], ['musehub_repos.repo_id'], ondelete='CASCADE'),
373 sa.PrimaryKeyConstraint('issue_id')
374 )
375 op.create_index(op.f('ix_musehub_issues_number'), 'musehub_issues', ['number'], unique=False)
376 op.create_index(op.f('ix_musehub_issues_repo_id'), 'musehub_issues', ['repo_id'], unique=False)
377 op.create_index('ix_musehub_issues_repo_number', 'musehub_issues', ['repo_id', 'number'], unique=False)
378 op.create_index('ix_musehub_issues_repo_state', 'musehub_issues', ['repo_id', 'state'], unique=False)
379 op.create_index(op.f('ix_musehub_issues_state'), 'musehub_issues', ['state'], unique=False)
380 op.create_table('musehub_labels',
381 sa.Column('id', sa.String(length=128), nullable=False),
382 sa.Column('repo_id', sa.String(length=128), nullable=False),
383 sa.Column('name', sa.String(length=50), nullable=False),
384 sa.Column('color', sa.String(length=7), nullable=False),
385 sa.Column('description', sa.String(length=200), nullable=True),
386 sa.Column('created_at', sa.DateTime(timezone=True), nullable=False),
387 sa.ForeignKeyConstraint(['repo_id'], ['musehub_repos.repo_id'], ondelete='CASCADE'),
388 sa.PrimaryKeyConstraint('id'),
389 sa.UniqueConstraint('repo_id', 'name', name='uq_musehub_labels_repo_name')
390 )
391 op.create_index('ix_musehub_labels_repo_id', 'musehub_labels', ['repo_id'], unique=False)
392 op.create_table('musehub_mists',
393 sa.Column('mist_id', sa.String(length=128), nullable=False),
394 sa.Column('repo_id', sa.String(length=128), nullable=False),
395 sa.Column('owner', sa.String(length=64), nullable=False),
396 sa.Column('artifact_type', sa.String(length=20), nullable=False),
397 sa.Column('language', sa.String(length=64), nullable=False),
398 sa.Column('filename', sa.String(length=255), nullable=False),
399 sa.Column('title', sa.String(length=500), nullable=False),
400 sa.Column('description', sa.Text(), nullable=False),
401 sa.Column('content', sa.Text(), nullable=False),
402 sa.Column('size_bytes', sa.Integer(), nullable=False),
403 sa.Column('commit_id', sa.String(length=128), nullable=True),
404 sa.Column('snapshot_id', sa.String(length=128), nullable=True),
405 sa.Column('version', sa.Integer(), nullable=False),
406 sa.Column('agent_id', sa.String(length=255), nullable=False),
407 sa.Column('model_id', sa.String(length=255), nullable=False),
408 sa.Column('gpg_signature', sa.Text(), nullable=True),
409 sa.Column('fork_parent_id', sa.String(length=128), nullable=True),
410 sa.Column('fork_depth', sa.Integer(), nullable=False),
411 sa.Column('fork_count', sa.Integer(), nullable=False),
412 sa.Column('view_count', sa.Integer(), nullable=False),
413 sa.Column('embed_count', sa.Integer(), nullable=False),
414 sa.Column('visibility', sa.String(length=10), nullable=False),
415 sa.Column('tags', sa.JSON(), nullable=False),
416 sa.Column('symbol_anchors', sa.JSON(), nullable=False),
417 sa.Column('created_at', sa.DateTime(timezone=True), nullable=False),
418 sa.Column('updated_at', sa.DateTime(timezone=True), nullable=False),
419 sa.ForeignKeyConstraint(['fork_parent_id'], ['musehub_mists.mist_id'], ondelete='SET NULL'),
420 sa.ForeignKeyConstraint(['repo_id'], ['musehub_repos.repo_id'], ondelete='CASCADE'),
421 sa.PrimaryKeyConstraint('mist_id')
422 )
423 op.create_index(op.f('ix_musehub_mists_artifact_type'), 'musehub_mists', ['artifact_type'], unique=False)
424 op.create_index('ix_musehub_mists_artifact_type_created_at', 'musehub_mists', ['artifact_type', 'created_at'], unique=False)
425 op.create_index('ix_musehub_mists_fork_parent_id', 'musehub_mists', ['fork_parent_id'], unique=False)
426 op.create_index(op.f('ix_musehub_mists_owner'), 'musehub_mists', ['owner'], unique=False)
427 op.create_index('ix_musehub_mists_owner_created_at', 'musehub_mists', ['owner', 'created_at'], unique=False)
428 op.create_index('ix_musehub_mists_owner_visibility', 'musehub_mists', ['owner', 'visibility'], unique=False)
429 op.create_index(op.f('ix_musehub_mists_repo_id'), 'musehub_mists', ['repo_id'], unique=False)
430 op.create_table('musehub_object_refs',
431 sa.Column('repo_id', sa.String(length=128), nullable=False),
432 sa.Column('object_id', sa.String(length=128), nullable=False),
433 sa.ForeignKeyConstraint(['object_id'], ['musehub_objects.object_id'], ondelete='CASCADE'),
434 sa.ForeignKeyConstraint(['repo_id'], ['musehub_repos.repo_id'], ondelete='CASCADE'),
435 sa.PrimaryKeyConstraint('repo_id', 'object_id')
436 )
437 op.create_table('musehub_proposals',
438 sa.Column('proposal_id', sa.String(length=128), nullable=False),
439 sa.Column('repo_id', sa.String(length=128), nullable=False),
440 sa.Column('proposal_number', sa.Integer(), nullable=False),
441 sa.Column('title', sa.String(length=500), nullable=False),
442 sa.Column('body', sa.Text(), nullable=False),
443 sa.Column('state', sa.String(length=20), nullable=False),
444 sa.Column('from_branch', sa.String(length=255), nullable=False),
445 sa.Column('to_branch', sa.String(length=255), nullable=False),
446 sa.Column('merge_commit_id', sa.String(length=128), nullable=True),
447 sa.Column('merged_at', sa.DateTime(timezone=True), nullable=True),
448 sa.Column('author', sa.String(length=255), nullable=False),
449 sa.Column('created_at', sa.DateTime(timezone=True), nullable=False),
450 sa.Column('updated_at', sa.DateTime(timezone=True), nullable=False),
451 sa.Column('domain_diff', sa.JSON(), nullable=True),
452 sa.Column('risk_score', sa.Float(), nullable=True),
453 sa.Column('blast_delta', sa.Float(), nullable=True),
454 sa.Column('breakage_count', sa.Integer(), nullable=False),
455 sa.Column('test_gap_count', sa.Integer(), nullable=False),
456 sa.Column('symbols_changed', sa.Integer(), nullable=False),
457 sa.Column('touched_symbols', sa.JSON(), nullable=False),
458 sa.ForeignKeyConstraint(['repo_id'], ['musehub_repos.repo_id'], ondelete='CASCADE'),
459 sa.PrimaryKeyConstraint('proposal_id')
460 )
461 op.create_index(op.f('ix_musehub_proposals_repo_id'), 'musehub_proposals', ['repo_id'], unique=False)
462 op.create_index('ix_musehub_proposals_repo_number', 'musehub_proposals', ['repo_id', 'proposal_number'], unique=False)
463 op.create_index('ix_musehub_proposals_repo_state', 'musehub_proposals', ['repo_id', 'state'], unique=False)
464 op.create_index(op.f('ix_musehub_proposals_state'), 'musehub_proposals', ['state'], unique=False)
465 op.create_table('musehub_releases',
466 sa.Column('release_id', sa.String(length=128), nullable=False),
467 sa.Column('repo_id', sa.String(length=128), nullable=False),
468 sa.Column('tag', sa.String(length=100), nullable=False),
469 sa.Column('title', sa.String(length=500), nullable=False),
470 sa.Column('body', sa.Text(), nullable=False),
471 sa.Column('commit_id', sa.String(length=128), nullable=True),
472 sa.Column('snapshot_id', sa.String(length=128), nullable=True),
473 sa.Column('semver_major', sa.Integer(), nullable=False),
474 sa.Column('semver_minor', sa.Integer(), nullable=False),
475 sa.Column('semver_patch', sa.Integer(), nullable=False),
476 sa.Column('semver_pre', sa.String(length=255), nullable=False),
477 sa.Column('semver_build', sa.String(length=255), nullable=False),
478 sa.Column('channel', sa.String(length=20), nullable=False),
479 sa.Column('download_urls', sa.JSON(), nullable=False),
480 sa.Column('author', sa.String(length=255), nullable=False),
481 sa.Column('agent_id', sa.String(length=255), nullable=False),
482 sa.Column('model_id', sa.String(length=255), nullable=False),
483 sa.Column('changelog_json', sa.Text(), nullable=False),
484 sa.Column('is_draft', sa.Boolean(), nullable=False),
485 sa.Column('gpg_signature', sa.Text(), nullable=True),
486 sa.Column('semantic_report_json', sa.Text(), nullable=False),
487 sa.Column('created_at', sa.DateTime(timezone=True), nullable=False),
488 sa.Column('updated_at', sa.DateTime(timezone=True), nullable=False),
489 sa.ForeignKeyConstraint(['repo_id'], ['musehub_repos.repo_id'], ondelete='CASCADE'),
490 sa.PrimaryKeyConstraint('release_id'),
491 sa.UniqueConstraint('repo_id', 'tag', name='uq_musehub_releases_repo_tag')
492 )
493 op.create_index(op.f('ix_musehub_releases_channel'), 'musehub_releases', ['channel'], unique=False)
494 op.create_index(op.f('ix_musehub_releases_repo_id'), 'musehub_releases', ['repo_id'], unique=False)
495 op.create_index(op.f('ix_musehub_releases_tag'), 'musehub_releases', ['tag'], unique=False)
496 op.create_table('musehub_sessions',
497 sa.Column('session_id', sa.String(length=128), nullable=False),
498 sa.Column('repo_id', sa.String(length=128), nullable=False),
499 sa.Column('schema_version', sa.String(length=10), nullable=False),
500 sa.Column('started_at', sa.DateTime(timezone=True), nullable=False),
501 sa.Column('ended_at', sa.DateTime(timezone=True), nullable=True),
502 sa.Column('participants', sa.JSON(), nullable=False),
503 sa.Column('location', sa.String(length=500), nullable=False),
504 sa.Column('intent', sa.Text(), nullable=False),
505 sa.Column('commits', sa.JSON(), nullable=False),
506 sa.Column('notes', sa.Text(), nullable=False),
507 sa.Column('is_active', sa.Boolean(), nullable=False),
508 sa.Column('created_at', sa.DateTime(timezone=True), nullable=False),
509 sa.ForeignKeyConstraint(['repo_id'], ['musehub_repos.repo_id'], ondelete='CASCADE'),
510 sa.PrimaryKeyConstraint('session_id')
511 )
512 op.create_index(op.f('ix_musehub_sessions_is_active'), 'musehub_sessions', ['is_active'], unique=False)
513 op.create_index(op.f('ix_musehub_sessions_repo_id'), 'musehub_sessions', ['repo_id'], unique=False)
514 op.create_index(op.f('ix_musehub_sessions_started_at'), 'musehub_sessions', ['started_at'], unique=False)
515 op.create_table('musehub_snapshots',
516 sa.Column('snapshot_id', sa.String(length=128), nullable=False),
517 sa.Column('repo_id', sa.String(length=128), nullable=False),
518 sa.Column('directories', sa.JSON(), nullable=False),
519 sa.Column('manifest_blob', sa.LargeBinary(), nullable=False),
520 sa.Column('entry_count', sa.Integer(), nullable=False),
521 sa.Column('created_at', sa.DateTime(timezone=True), nullable=False),
522 sa.ForeignKeyConstraint(['repo_id'], ['musehub_repos.repo_id'], ondelete='CASCADE'),
523 sa.PrimaryKeyConstraint('snapshot_id')
524 )
525 op.create_index(op.f('ix_musehub_snapshots_repo_id'), 'musehub_snapshots', ['repo_id'], unique=False)
526 op.create_table('musehub_webhooks',
527 sa.Column('webhook_id', sa.String(length=128), nullable=False),
528 sa.Column('repo_id', sa.String(length=128), nullable=False),
529 sa.Column('url', sa.String(length=2048), nullable=False),
530 sa.Column('events', sa.JSON(), nullable=False),
531 sa.Column('secret', sa.Text(), nullable=False),
532 sa.Column('active', sa.Boolean(), nullable=False),
533 sa.Column('created_at', sa.DateTime(timezone=True), nullable=False),
534 sa.Column('updated_at', sa.DateTime(timezone=True), nullable=False),
535 sa.ForeignKeyConstraint(['repo_id'], ['musehub_repos.repo_id'], ondelete='CASCADE'),
536 sa.PrimaryKeyConstraint('webhook_id')
537 )
538 op.create_index(op.f('ix_musehub_webhooks_repo_id'), 'musehub_webhooks', ['repo_id'], unique=False)
539 op.create_table('musehub_wire_tags',
540 sa.Column('tag_id', sa.String(length=128), nullable=False),
541 sa.Column('repo_id', sa.String(length=128), nullable=False),
542 sa.Column('commit_id', sa.String(length=128), nullable=False),
543 sa.Column('tag', sa.String(length=500), nullable=False),
544 sa.Column('created_at', sa.DateTime(timezone=True), nullable=False),
545 sa.ForeignKeyConstraint(['repo_id'], ['musehub_repos.repo_id'], ondelete='CASCADE'),
546 sa.PrimaryKeyConstraint('tag_id'),
547 sa.UniqueConstraint('repo_id', 'tag', name='uq_musehub_wire_tags_repo_tag')
548 )
549 op.create_index(op.f('ix_musehub_wire_tags_repo_id'), 'musehub_wire_tags', ['repo_id'], unique=False)
550 op.create_index(op.f('ix_musehub_wire_tags_tag'), 'musehub_wire_tags', ['tag'], unique=False)
551 op.create_table('muse_tags',
552 sa.Column('tag_id', sa.String(length=36), nullable=False),
553 sa.Column('repo_id', sa.String(length=128), nullable=False),
554 sa.Column('commit_id', sa.String(length=128), nullable=False),
555 sa.Column('tag', sa.Text(), nullable=False),
556 sa.Column('created_at', sa.DateTime(timezone=True), nullable=False),
557 sa.ForeignKeyConstraint(['commit_id'], ['muse_commits.commit_id'], ondelete='CASCADE'),
558 sa.PrimaryKeyConstraint('tag_id')
559 )
560 op.create_index(op.f('ix_muse_tags_commit_id'), 'muse_tags', ['commit_id'], unique=False)
561 op.create_index(op.f('ix_muse_tags_repo_id'), 'muse_tags', ['repo_id'], unique=False)
562 op.create_index(op.f('ix_muse_tags_tag'), 'muse_tags', ['tag'], unique=False)
563 op.create_table('musehub_issue_comments',
564 sa.Column('comment_id', sa.String(length=128), nullable=False),
565 sa.Column('issue_id', sa.String(length=128), nullable=False),
566 sa.Column('repo_id', sa.String(length=128), nullable=False),
567 sa.Column('author', sa.String(length=255), nullable=False),
568 sa.Column('body', sa.Text(), nullable=False),
569 sa.Column('parent_id', sa.String(length=128), nullable=True),
570 sa.Column('is_deleted', sa.Boolean(), nullable=False),
571 sa.Column('created_at', sa.DateTime(timezone=True), nullable=False),
572 sa.Column('updated_at', sa.DateTime(timezone=True), nullable=False),
573 sa.ForeignKeyConstraint(['issue_id'], ['musehub_issues.issue_id'], ondelete='CASCADE'),
574 sa.ForeignKeyConstraint(['repo_id'], ['musehub_repos.repo_id'], ondelete='CASCADE'),
575 sa.PrimaryKeyConstraint('comment_id')
576 )
577 op.create_index(op.f('ix_musehub_issue_comments_created_at'), 'musehub_issue_comments', ['created_at'], unique=False)
578 op.create_index(op.f('ix_musehub_issue_comments_issue_id'), 'musehub_issue_comments', ['issue_id'], unique=False)
579 op.create_index(op.f('ix_musehub_issue_comments_parent_id'), 'musehub_issue_comments', ['parent_id'], unique=False)
580 op.create_index(op.f('ix_musehub_issue_comments_repo_id'), 'musehub_issue_comments', ['repo_id'], unique=False)
581 op.create_table('musehub_issue_events',
582 sa.Column('event_id', sa.String(length=36), nullable=False),
583 sa.Column('issue_id', sa.String(length=128), nullable=False),
584 sa.Column('repo_id', sa.String(length=128), nullable=False),
585 sa.Column('actor', sa.String(length=255), nullable=False),
586 sa.Column('event_type', sa.String(length=64), nullable=False),
587 sa.Column('payload', sa.JSON(), nullable=False),
588 sa.Column('created_at', sa.DateTime(timezone=True), nullable=False),
589 sa.ForeignKeyConstraint(['issue_id'], ['musehub_issues.issue_id'], ondelete='CASCADE'),
590 sa.ForeignKeyConstraint(['repo_id'], ['musehub_repos.repo_id'], ondelete='CASCADE'),
591 sa.PrimaryKeyConstraint('event_id')
592 )
593 op.create_index(op.f('ix_musehub_issue_events_created_at'), 'musehub_issue_events', ['created_at'], unique=False)
594 op.create_index('ix_musehub_issue_events_issue_created', 'musehub_issue_events', ['issue_id', 'created_at'], unique=False)
595 op.create_index(op.f('ix_musehub_issue_events_issue_id'), 'musehub_issue_events', ['issue_id'], unique=False)
596 op.create_index(op.f('ix_musehub_issue_events_repo_id'), 'musehub_issue_events', ['repo_id'], unique=False)
597 op.create_table('musehub_issue_labels',
598 sa.Column('issue_id', sa.String(length=128), nullable=False),
599 sa.Column('label_id', sa.String(length=128), nullable=False),
600 sa.ForeignKeyConstraint(['issue_id'], ['musehub_issues.issue_id'], ondelete='CASCADE'),
601 sa.ForeignKeyConstraint(['label_id'], ['musehub_labels.id'], ondelete='CASCADE'),
602 sa.PrimaryKeyConstraint('issue_id', 'label_id')
603 )
604 op.create_index('ix_musehub_issue_labels_label_id', 'musehub_issue_labels', ['label_id'], unique=False)
605 op.create_table('musehub_proposal_comments',
606 sa.Column('comment_id', sa.String(length=128), nullable=False),
607 sa.Column('proposal_id', sa.String(length=128), nullable=False),
608 sa.Column('repo_id', sa.String(length=128), nullable=False),
609 sa.Column('author', sa.String(length=255), nullable=False),
610 sa.Column('body', sa.Text(), nullable=False),
611 sa.Column('dimension_ref', sa.JSON(), nullable=False),
612 sa.Column('symbol_address', sa.String(length=512), nullable=True),
613 sa.Column('parent_comment_id', sa.String(length=128), nullable=True),
614 sa.Column('created_at', sa.DateTime(timezone=True), nullable=False),
615 sa.ForeignKeyConstraint(['proposal_id'], ['musehub_proposals.proposal_id'], ondelete='CASCADE'),
616 sa.PrimaryKeyConstraint('comment_id')
617 )
618 op.create_index(op.f('ix_musehub_proposal_comments_created_at'), 'musehub_proposal_comments', ['created_at'], unique=False)
619 op.create_index(op.f('ix_musehub_proposal_comments_parent_comment_id'), 'musehub_proposal_comments', ['parent_comment_id'], unique=False)
620 op.create_index(op.f('ix_musehub_proposal_comments_proposal_id'), 'musehub_proposal_comments', ['proposal_id'], unique=False)
621 op.create_index(op.f('ix_musehub_proposal_comments_repo_id'), 'musehub_proposal_comments', ['repo_id'], unique=False)
622 op.create_table('musehub_proposal_labels',
623 sa.Column('proposal_id', sa.String(length=128), nullable=False),
624 sa.Column('label_id', sa.String(length=128), nullable=False),
625 sa.ForeignKeyConstraint(['label_id'], ['musehub_labels.id'], ondelete='CASCADE'),
626 sa.ForeignKeyConstraint(['proposal_id'], ['musehub_proposals.proposal_id'], ondelete='CASCADE'),
627 sa.PrimaryKeyConstraint('proposal_id', 'label_id')
628 )
629 op.create_index('ix_musehub_proposal_labels_label_id', 'musehub_proposal_labels', ['label_id'], unique=False)
630 op.create_table('musehub_proposal_reviews',
631 sa.Column('review_id', sa.String(length=128), nullable=False),
632 sa.Column('proposal_id', sa.String(length=128), nullable=False),
633 sa.Column('reviewer_username', sa.String(length=255), nullable=False),
634 sa.Column('state', sa.String(length=30), nullable=False),
635 sa.Column('body', sa.Text(), nullable=True),
636 sa.Column('submitted_at', sa.DateTime(timezone=True), nullable=True),
637 sa.Column('created_at', sa.DateTime(timezone=True), nullable=False),
638 sa.ForeignKeyConstraint(['proposal_id'], ['musehub_proposals.proposal_id'], ondelete='CASCADE'),
639 sa.PrimaryKeyConstraint('review_id')
640 )
641 op.create_index(op.f('ix_musehub_proposal_reviews_proposal_id'), 'musehub_proposal_reviews', ['proposal_id'], unique=False)
642 op.create_index(op.f('ix_musehub_proposal_reviews_reviewer_username'), 'musehub_proposal_reviews', ['reviewer_username'], unique=False)
643 op.create_index(op.f('ix_musehub_proposal_reviews_state'), 'musehub_proposal_reviews', ['state'], unique=False)
644 op.create_table('musehub_release_assets',
645 sa.Column('asset_id', sa.String(length=128), nullable=False),
646 sa.Column('release_id', sa.String(length=128), nullable=False),
647 sa.Column('repo_id', sa.String(length=128), nullable=False),
648 sa.Column('name', sa.String(length=500), nullable=False),
649 sa.Column('label', sa.String(length=255), nullable=False),
650 sa.Column('content_type', sa.String(length=128), nullable=False),
651 sa.Column('size', sa.Integer(), nullable=False),
652 sa.Column('download_url', sa.String(length=2048), nullable=False),
653 sa.Column('download_count', sa.Integer(), nullable=False),
654 sa.Column('created_at', sa.DateTime(timezone=True), nullable=False),
655 sa.ForeignKeyConstraint(['release_id'], ['musehub_releases.release_id'], ondelete='CASCADE'),
656 sa.PrimaryKeyConstraint('asset_id')
657 )
658 op.create_index(op.f('ix_musehub_release_assets_release_id'), 'musehub_release_assets', ['release_id'], unique=False)
659 op.create_index(op.f('ix_musehub_release_assets_repo_id'), 'musehub_release_assets', ['repo_id'], unique=False)
660 op.create_table('musehub_snapshot_entries',
661 sa.Column('snapshot_id', sa.String(length=128), nullable=False),
662 sa.Column('path', sa.String(length=4096), nullable=False),
663 sa.Column('object_id', sa.String(length=128), nullable=False),
664 sa.Column('size_bytes', sa.Integer(), nullable=False),
665 sa.ForeignKeyConstraint(['snapshot_id'], ['musehub_snapshots.snapshot_id'], ondelete='CASCADE'),
666 sa.PrimaryKeyConstraint('snapshot_id', 'path')
667 )
668 op.create_table('musehub_webhook_deliveries',
669 sa.Column('delivery_id', sa.String(length=36), nullable=False),
670 sa.Column('webhook_id', sa.String(length=128), nullable=False),
671 sa.Column('event_type', sa.String(length=64), nullable=False),
672 sa.Column('payload', sa.Text(), nullable=False),
673 sa.Column('attempt', sa.Integer(), nullable=False),
674 sa.Column('success', sa.Boolean(), nullable=False),
675 sa.Column('response_status', sa.Integer(), nullable=False),
676 sa.Column('response_body', sa.Text(), nullable=False),
677 sa.Column('delivered_at', sa.DateTime(timezone=True), nullable=False),
678 sa.ForeignKeyConstraint(['webhook_id'], ['musehub_webhooks.webhook_id'], ondelete='CASCADE'),
679 sa.PrimaryKeyConstraint('delivery_id')
680 )
681 op.create_index(op.f('ix_musehub_webhook_deliveries_event_type'), 'musehub_webhook_deliveries', ['event_type'], unique=False)
682 op.create_index(op.f('ix_musehub_webhook_deliveries_webhook_id'), 'musehub_webhook_deliveries', ['webhook_id'], unique=False)
683 # ### end Alembic commands ###
684
685
686 def downgrade() -> None:
687 # ### commands auto generated by Alembic - please adjust! ###
688 op.drop_index(op.f('ix_musehub_webhook_deliveries_webhook_id'), table_name='musehub_webhook_deliveries')
689 op.drop_index(op.f('ix_musehub_webhook_deliveries_event_type'), table_name='musehub_webhook_deliveries')
690 op.drop_table('musehub_webhook_deliveries')
691 op.drop_table('musehub_snapshot_entries')
692 op.drop_index(op.f('ix_musehub_release_assets_repo_id'), table_name='musehub_release_assets')
693 op.drop_index(op.f('ix_musehub_release_assets_release_id'), table_name='musehub_release_assets')
694 op.drop_table('musehub_release_assets')
695 op.drop_index(op.f('ix_musehub_proposal_reviews_state'), table_name='musehub_proposal_reviews')
696 op.drop_index(op.f('ix_musehub_proposal_reviews_reviewer_username'), table_name='musehub_proposal_reviews')
697 op.drop_index(op.f('ix_musehub_proposal_reviews_proposal_id'), table_name='musehub_proposal_reviews')
698 op.drop_table('musehub_proposal_reviews')
699 op.drop_index('ix_musehub_proposal_labels_label_id', table_name='musehub_proposal_labels')
700 op.drop_table('musehub_proposal_labels')
701 op.drop_index(op.f('ix_musehub_proposal_comments_repo_id'), table_name='musehub_proposal_comments')
702 op.drop_index(op.f('ix_musehub_proposal_comments_proposal_id'), table_name='musehub_proposal_comments')
703 op.drop_index(op.f('ix_musehub_proposal_comments_parent_comment_id'), table_name='musehub_proposal_comments')
704 op.drop_index(op.f('ix_musehub_proposal_comments_created_at'), table_name='musehub_proposal_comments')
705 op.drop_table('musehub_proposal_comments')
706 op.drop_index('ix_musehub_issue_labels_label_id', table_name='musehub_issue_labels')
707 op.drop_table('musehub_issue_labels')
708 op.drop_index(op.f('ix_musehub_issue_events_repo_id'), table_name='musehub_issue_events')
709 op.drop_index(op.f('ix_musehub_issue_events_issue_id'), table_name='musehub_issue_events')
710 op.drop_index('ix_musehub_issue_events_issue_created', table_name='musehub_issue_events')
711 op.drop_index(op.f('ix_musehub_issue_events_created_at'), table_name='musehub_issue_events')
712 op.drop_table('musehub_issue_events')
713 op.drop_index(op.f('ix_musehub_issue_comments_repo_id'), table_name='musehub_issue_comments')
714 op.drop_index(op.f('ix_musehub_issue_comments_parent_id'), table_name='musehub_issue_comments')
715 op.drop_index(op.f('ix_musehub_issue_comments_issue_id'), table_name='musehub_issue_comments')
716 op.drop_index(op.f('ix_musehub_issue_comments_created_at'), table_name='musehub_issue_comments')
717 op.drop_table('musehub_issue_comments')
718 op.drop_index(op.f('ix_muse_tags_tag'), table_name='muse_tags')
719 op.drop_index(op.f('ix_muse_tags_repo_id'), table_name='muse_tags')
720 op.drop_index(op.f('ix_muse_tags_commit_id'), table_name='muse_tags')
721 op.drop_table('muse_tags')
722 op.drop_index(op.f('ix_musehub_wire_tags_tag'), table_name='musehub_wire_tags')
723 op.drop_index(op.f('ix_musehub_wire_tags_repo_id'), table_name='musehub_wire_tags')
724 op.drop_table('musehub_wire_tags')
725 op.drop_index(op.f('ix_musehub_webhooks_repo_id'), table_name='musehub_webhooks')
726 op.drop_table('musehub_webhooks')
727 op.drop_index(op.f('ix_musehub_snapshots_repo_id'), table_name='musehub_snapshots')
728 op.drop_table('musehub_snapshots')
729 op.drop_index(op.f('ix_musehub_sessions_started_at'), table_name='musehub_sessions')
730 op.drop_index(op.f('ix_musehub_sessions_repo_id'), table_name='musehub_sessions')
731 op.drop_index(op.f('ix_musehub_sessions_is_active'), table_name='musehub_sessions')
732 op.drop_table('musehub_sessions')
733 op.drop_index(op.f('ix_musehub_releases_tag'), table_name='musehub_releases')
734 op.drop_index(op.f('ix_musehub_releases_repo_id'), table_name='musehub_releases')
735 op.drop_index(op.f('ix_musehub_releases_channel'), table_name='musehub_releases')
736 op.drop_table('musehub_releases')
737 op.drop_index(op.f('ix_musehub_proposals_state'), table_name='musehub_proposals')
738 op.drop_index('ix_musehub_proposals_repo_state', table_name='musehub_proposals')
739 op.drop_index('ix_musehub_proposals_repo_number', table_name='musehub_proposals')
740 op.drop_index(op.f('ix_musehub_proposals_repo_id'), table_name='musehub_proposals')
741 op.drop_table('musehub_proposals')
742 op.drop_table('musehub_object_refs')
743 op.drop_index(op.f('ix_musehub_mists_repo_id'), table_name='musehub_mists')
744 op.drop_index('ix_musehub_mists_owner_visibility', table_name='musehub_mists')
745 op.drop_index('ix_musehub_mists_owner_created_at', table_name='musehub_mists')
746 op.drop_index(op.f('ix_musehub_mists_owner'), table_name='musehub_mists')
747 op.drop_index('ix_musehub_mists_fork_parent_id', table_name='musehub_mists')
748 op.drop_index('ix_musehub_mists_artifact_type_created_at', table_name='musehub_mists')
749 op.drop_index(op.f('ix_musehub_mists_artifact_type'), table_name='musehub_mists')
750 op.drop_table('musehub_mists')
751 op.drop_index('ix_musehub_labels_repo_id', table_name='musehub_labels')
752 op.drop_table('musehub_labels')
753 op.drop_index(op.f('ix_musehub_issues_state'), table_name='musehub_issues')
754 op.drop_index('ix_musehub_issues_repo_state', table_name='musehub_issues')
755 op.drop_index('ix_musehub_issues_repo_number', table_name='musehub_issues')
756 op.drop_index(op.f('ix_musehub_issues_repo_id'), table_name='musehub_issues')
757 op.drop_index(op.f('ix_musehub_issues_number'), table_name='musehub_issues')
758 op.drop_table('musehub_issues')
759 op.drop_index('ix_musehub_intel_results_repo_type', table_name='musehub_intel_results')
760 op.drop_index(op.f('ix_musehub_intel_results_repo_id'), table_name='musehub_intel_results')
761 op.drop_index(op.f('ix_musehub_intel_results_intel_type'), table_name='musehub_intel_results')
762 op.drop_index(op.f('ix_musehub_intel_results_domain'), table_name='musehub_intel_results')
763 op.drop_table('musehub_intel_results')
764 op.drop_index(op.f('ix_musehub_forks_source_repo_id'), table_name='musehub_forks')
765 op.drop_index(op.f('ix_musehub_forks_forked_by'), table_name='musehub_forks')
766 op.drop_index(op.f('ix_musehub_forks_fork_repo_id'), table_name='musehub_forks')
767 op.drop_table('musehub_forks')
768 op.drop_index(op.f('ix_musehub_coord_tasks_status'), table_name='musehub_coord_tasks')
769 op.drop_index(op.f('ix_musehub_coord_tasks_repo_id'), table_name='musehub_coord_tasks')
770 op.drop_index('ix_coord_tasks_repo_queue_status', table_name='musehub_coord_tasks')
771 op.drop_index('ix_coord_tasks_repo_priority', table_name='musehub_coord_tasks')
772 op.drop_table('musehub_coord_tasks')
773 op.drop_index(op.f('ix_musehub_coord_reservations_repo_id'), table_name='musehub_coord_reservations')
774 op.drop_table('musehub_coord_reservations')
775 op.drop_index(op.f('ix_musehub_coord_records_repo_id'), table_name='musehub_coord_records')
776 op.drop_index('ix_coord_repo_kind_id', table_name='musehub_coord_records')
777 op.drop_index('ix_coord_repo_id_cursor', table_name='musehub_coord_records')
778 op.drop_table('musehub_coord_records')
779 op.drop_index(op.f('ix_musehub_commits_timestamp'), table_name='musehub_commits')
780 op.drop_index('ix_musehub_commits_repo_timestamp', table_name='musehub_commits')
781 op.drop_index(op.f('ix_musehub_commits_repo_id'), table_name='musehub_commits')
782 op.drop_index('ix_musehub_commits_repo_branch', table_name='musehub_commits')
783 op.drop_index(op.f('ix_musehub_commits_branch'), table_name='musehub_commits')
784 op.drop_table('musehub_commits')
785 op.drop_index('ix_musehub_collaborators_repo_id', table_name='musehub_collaborators')
786 op.drop_index('ix_musehub_collaborators_identity_handle', table_name='musehub_collaborators')
787 op.drop_table('musehub_collaborators')
788 op.drop_index(op.f('ix_musehub_branches_repo_id'), table_name='musehub_branches')
789 op.drop_table('musehub_branches')
790 op.drop_index('ix_musehub_background_jobs_status_created', table_name='musehub_background_jobs')
791 op.drop_index(op.f('ix_musehub_background_jobs_status'), table_name='musehub_background_jobs')
792 op.drop_index(op.f('ix_musehub_background_jobs_repo_id'), table_name='musehub_background_jobs')
793 op.drop_table('musehub_background_jobs')
794 op.drop_index('ix_musehub_auth_keys_identity_id', table_name='musehub_auth_keys')
795 op.drop_index('ix_musehub_auth_keys_algorithm', table_name='musehub_auth_keys')
796 op.drop_table('musehub_auth_keys')
797 op.drop_index(op.f('ix_muse_commits_repo_id'), table_name='muse_commits')
798 op.drop_index(op.f('ix_muse_commits_parent_commit_id'), table_name='muse_commits')
799 op.drop_index(op.f('ix_muse_commits_parent2_commit_id'), table_name='muse_commits')
800 op.drop_table('muse_commits')
801 op.drop_index(op.f('ix_musehub_repos_slug'), table_name='musehub_repos')
802 op.drop_index('ix_musehub_repos_owner_visibility', table_name='musehub_repos')
803 op.drop_index(op.f('ix_musehub_repos_owner_user_id'), table_name='musehub_repos')
804 op.drop_index(op.f('ix_musehub_repos_owner'), table_name='musehub_repos')
805 op.drop_index(op.f('ix_musehub_repos_domain_id'), table_name='musehub_repos')
806 op.drop_table('musehub_repos')
807 op.drop_table('musehub_profile_snapshots')
808 op.drop_table('musehub_objects')
809 op.drop_index('ix_musehub_mpay_claims_sender', table_name='musehub_mpay_claims')
810 op.drop_index('ix_musehub_mpay_claims_recipient', table_name='musehub_mpay_claims')
811 op.drop_table('musehub_mpay_claims')
812 op.drop_index(op.f('ix_musehub_identities_spawned_by'), table_name='musehub_identities')
813 op.drop_index(op.f('ix_musehub_identities_is_verified'), table_name='musehub_identities')
814 op.drop_index(op.f('ix_musehub_identities_handle'), table_name='musehub_identities')
815 op.drop_index(op.f('ix_musehub_identities_expires_at'), table_name='musehub_identities')
816 op.drop_index(op.f('ix_musehub_identities_email'), table_name='musehub_identities')
817 op.drop_table('musehub_identities')
818 op.drop_index(op.f('ix_musehub_domains_slug'), table_name='musehub_domains')
819 op.drop_index(op.f('ix_musehub_domains_author_user_id'), table_name='musehub_domains')
820 op.drop_index(op.f('ix_musehub_domains_author_slug'), table_name='musehub_domains')
821 op.drop_table('musehub_domains')
822 op.drop_index(op.f('ix_musehub_domain_installs_user_id'), table_name='musehub_domain_installs')
823 op.drop_index(op.f('ix_musehub_domain_installs_domain_id'), table_name='musehub_domain_installs')
824 op.drop_table('musehub_domain_installs')
825 op.drop_index('ix_musehub_auth_challenges_expires_at', table_name='musehub_auth_challenges')
826 op.drop_table('musehub_auth_challenges')
827 op.drop_index('ix_musehub_attestations_subject', table_name='musehub_attestations')
828 op.drop_index('ix_musehub_attestations_attester', table_name='musehub_attestations')
829 op.drop_table('musehub_attestations')
830 op.drop_table('muse_snapshots')
831 op.drop_table('muse_objects')
832 # ### end Alembic commands ###
File History 1 commit
sha256:a34090cc4a394a78bd72cbbe34b08cc59525141e19135b6c0ab154f10611b9ef debug(push/stream): instrument O-frame decode path with INF… Sonnet 4.6 patch 121 days ago