0025_drop_social_layer.py
python
sha256:a10adeeb7a0169cb9900f9806ed7a973047258abb6283724fe55e8eb68ff3f0a
init: musehub initial commit
Human
171 days ago
| 1 | """Drop social layer — 12 tables removed entirely. |
| 2 | |
| 3 | Tables dropped: |
| 4 | musehub_stars |
| 5 | musehub_follows |
| 6 | musehub_watches |
| 7 | musehub_reactions |
| 8 | musehub_view_events |
| 9 | musehub_download_events |
| 10 | musehub_notifications |
| 11 | musehub_comments |
| 12 | musehub_events |
| 13 | musehub_forks |
| 14 | musehub_render_jobs |
| 15 | musehub_health_snapshots |
| 16 | |
| 17 | Revision ID: 0025 |
| 18 | Revises: 0024 |
| 19 | """ |
| 20 | from __future__ import annotations |
| 21 | |
| 22 | import sqlalchemy as sa |
| 23 | from alembic import op |
| 24 | |
| 25 | revision = "0025" |
| 26 | down_revision = "0024" |
| 27 | branch_labels = None |
| 28 | depends_on = None |
| 29 | |
| 30 | |
| 31 | def upgrade() -> None: |
| 32 | # Use IF EXISTS — some tables may have been created and dropped outside |
| 33 | # alembic (e.g. health_snapshots, render_jobs) or were never present on |
| 34 | # DB instances set up from an earlier schema baseline. |
| 35 | op.execute("DROP TABLE IF EXISTS musehub_stars CASCADE") |
| 36 | op.execute("DROP TABLE IF EXISTS musehub_follows CASCADE") |
| 37 | op.execute("DROP TABLE IF EXISTS musehub_watches CASCADE") |
| 38 | op.execute("DROP TABLE IF EXISTS musehub_reactions CASCADE") |
| 39 | op.execute("DROP TABLE IF EXISTS musehub_view_events CASCADE") |
| 40 | op.execute("DROP TABLE IF EXISTS musehub_download_events CASCADE") |
| 41 | op.execute("DROP TABLE IF EXISTS musehub_notifications CASCADE") |
| 42 | op.execute("DROP TABLE IF EXISTS musehub_comments CASCADE") |
| 43 | op.execute("DROP TABLE IF EXISTS musehub_events CASCADE") |
| 44 | op.execute("DROP TABLE IF EXISTS musehub_render_jobs CASCADE") |
| 45 | op.execute("DROP TABLE IF EXISTS musehub_health_snapshots CASCADE") |
| 46 | op.execute("DROP TABLE IF EXISTS musehub_forks CASCADE") |
| 47 | |
| 48 | |
| 49 | def downgrade() -> None: |
| 50 | op.create_table( |
| 51 | "musehub_stars", |
| 52 | sa.Column("star_id", sa.String(36), primary_key=True), |
| 53 | sa.Column("repo_id", sa.String(36), sa.ForeignKey("musehub_repos.repo_id", ondelete="CASCADE"), nullable=False), |
| 54 | sa.Column("user_id", sa.String(36), nullable=False), |
| 55 | sa.Column("created_at", sa.DateTime(timezone=True), nullable=False, server_default=sa.func.now()), |
| 56 | sa.UniqueConstraint("repo_id", "user_id", name="uq_musehub_stars_repo_user"), |
| 57 | ) |
| 58 | op.create_index("ix_musehub_stars_repo_id", "musehub_stars", ["repo_id"]) |
| 59 | op.create_index("ix_musehub_stars_user_id", "musehub_stars", ["user_id"]) |
| 60 | |
| 61 | op.create_table( |
| 62 | "musehub_follows", |
| 63 | sa.Column("follow_id", sa.String(36), primary_key=True), |
| 64 | sa.Column("follower_id", sa.String(255), nullable=False), |
| 65 | sa.Column("followee_id", sa.String(255), nullable=False), |
| 66 | sa.Column("created_at", sa.DateTime(timezone=True), nullable=False, server_default=sa.func.now()), |
| 67 | sa.UniqueConstraint("follower_id", "followee_id", name="uq_musehub_follows"), |
| 68 | ) |
| 69 | op.create_index("ix_musehub_follows_follower_id", "musehub_follows", ["follower_id"]) |
| 70 | op.create_index("ix_musehub_follows_followee_id", "musehub_follows", ["followee_id"]) |
| 71 | |
| 72 | op.create_table( |
| 73 | "musehub_watches", |
| 74 | sa.Column("watch_id", sa.String(36), primary_key=True), |
| 75 | sa.Column("user_id", sa.String(255), nullable=False), |
| 76 | sa.Column("repo_id", sa.String(36), sa.ForeignKey("musehub_repos.repo_id", ondelete="CASCADE"), nullable=False), |
| 77 | sa.Column("created_at", sa.DateTime(timezone=True), nullable=False, server_default=sa.func.now()), |
| 78 | sa.UniqueConstraint("user_id", "repo_id", name="uq_musehub_watches"), |
| 79 | ) |
| 80 | op.create_index("ix_musehub_watches_user_id", "musehub_watches", ["user_id"]) |
| 81 | op.create_index("ix_musehub_watches_repo_id", "musehub_watches", ["repo_id"]) |
| 82 | |
| 83 | op.create_table( |
| 84 | "musehub_reactions", |
| 85 | sa.Column("reaction_id", sa.String(36), primary_key=True), |
| 86 | sa.Column("repo_id", sa.String(36), nullable=False), |
| 87 | sa.Column("target_type", sa.String(20), nullable=False), |
| 88 | sa.Column("target_id", sa.String(255), nullable=False), |
| 89 | sa.Column("user_id", sa.String(255), nullable=False), |
| 90 | sa.Column("emoji", sa.String(10), nullable=False), |
| 91 | sa.Column("created_at", sa.DateTime(timezone=True), nullable=False, server_default=sa.func.now()), |
| 92 | sa.UniqueConstraint("user_id", "target_type", "target_id", "emoji", name="uq_musehub_reactions"), |
| 93 | ) |
| 94 | op.create_index("ix_musehub_reactions_repo_id", "musehub_reactions", ["repo_id"]) |
| 95 | op.create_index("ix_musehub_reactions_target_type", "musehub_reactions", ["target_type"]) |
| 96 | op.create_index("ix_musehub_reactions_target_id", "musehub_reactions", ["target_id"]) |
| 97 | op.create_index("ix_musehub_reactions_user_id", "musehub_reactions", ["user_id"]) |
| 98 | |
| 99 | op.create_table( |
| 100 | "musehub_view_events", |
| 101 | sa.Column("view_id", sa.String(36), primary_key=True), |
| 102 | sa.Column("repo_id", sa.String(36), sa.ForeignKey("musehub_repos.repo_id", ondelete="CASCADE"), nullable=False), |
| 103 | sa.Column("viewer_fingerprint", sa.String(64), nullable=False), |
| 104 | sa.Column("event_date", sa.String(10), nullable=False), |
| 105 | sa.Column("created_at", sa.DateTime(timezone=True), nullable=False, server_default=sa.func.now()), |
| 106 | sa.UniqueConstraint("repo_id", "viewer_fingerprint", "event_date", name="uq_musehub_view_events"), |
| 107 | ) |
| 108 | op.create_index("ix_musehub_view_events_repo_id", "musehub_view_events", ["repo_id"]) |
| 109 | |
| 110 | op.create_table( |
| 111 | "musehub_download_events", |
| 112 | sa.Column("dl_id", sa.String(36), primary_key=True), |
| 113 | sa.Column("repo_id", sa.String(36), sa.ForeignKey("musehub_repos.repo_id", ondelete="CASCADE"), nullable=False), |
| 114 | sa.Column("ref", sa.String(255), nullable=False), |
| 115 | sa.Column("downloader_id", sa.String(255), nullable=True), |
| 116 | sa.Column("created_at", sa.DateTime(timezone=True), nullable=False, server_default=sa.func.now()), |
| 117 | ) |
| 118 | op.create_index("ix_musehub_download_events_repo_id", "musehub_download_events", ["repo_id"]) |
| 119 | op.create_index("ix_musehub_download_events_created_at", "musehub_download_events", ["created_at"]) |
| 120 | |
| 121 | op.create_table( |
| 122 | "musehub_notifications", |
| 123 | sa.Column("notif_id", sa.String(36), primary_key=True), |
| 124 | sa.Column("recipient_id", sa.String(255), nullable=False), |
| 125 | sa.Column("event_type", sa.String(40), nullable=False), |
| 126 | sa.Column("repo_id", sa.String(36), nullable=True), |
| 127 | sa.Column("actor", sa.String(255), nullable=False), |
| 128 | sa.Column("payload", sa.JSON(), nullable=False, server_default="{}"), |
| 129 | sa.Column("is_read", sa.Boolean(), nullable=False, server_default="false"), |
| 130 | sa.Column("created_at", sa.DateTime(timezone=True), nullable=False, server_default=sa.func.now()), |
| 131 | ) |
| 132 | op.create_index("ix_musehub_notifications_recipient_id", "musehub_notifications", ["recipient_id"]) |
| 133 | op.create_index("ix_musehub_notifications_is_read", "musehub_notifications", ["is_read"]) |
| 134 | op.create_index("ix_musehub_notifications_created_at", "musehub_notifications", ["created_at"]) |
| 135 | |
| 136 | op.create_table( |
| 137 | "musehub_comments", |
| 138 | sa.Column("comment_id", sa.String(36), primary_key=True), |
| 139 | sa.Column("repo_id", sa.String(36), sa.ForeignKey("musehub_repos.repo_id", ondelete="CASCADE"), nullable=False), |
| 140 | sa.Column("target_type", sa.String(20), nullable=False), |
| 141 | sa.Column("target_id", sa.String(255), nullable=False), |
| 142 | sa.Column("author", sa.String(255), nullable=False), |
| 143 | sa.Column("body", sa.Text(), nullable=False), |
| 144 | sa.Column("parent_id", sa.String(36), nullable=True), |
| 145 | sa.Column("is_deleted", sa.Boolean(), nullable=False, server_default="false"), |
| 146 | sa.Column("created_at", sa.DateTime(timezone=True), nullable=False, server_default=sa.func.now()), |
| 147 | sa.Column("updated_at", sa.DateTime(timezone=True), nullable=False, server_default=sa.func.now()), |
| 148 | ) |
| 149 | op.create_index("ix_musehub_comments_repo_id", "musehub_comments", ["repo_id"]) |
| 150 | op.create_index("ix_musehub_comments_target_type", "musehub_comments", ["target_type"]) |
| 151 | op.create_index("ix_musehub_comments_target_id", "musehub_comments", ["target_id"]) |
| 152 | op.create_index("ix_musehub_comments_author", "musehub_comments", ["author"]) |
| 153 | op.create_index("ix_musehub_comments_created_at", "musehub_comments", ["created_at"]) |
| 154 | |
| 155 | op.create_table( |
| 156 | "musehub_events", |
| 157 | sa.Column("event_id", sa.String(36), primary_key=True), |
| 158 | sa.Column("repo_id", sa.String(36), sa.ForeignKey("musehub_repos.repo_id", ondelete="CASCADE"), nullable=False), |
| 159 | sa.Column("event_type", sa.String(40), nullable=False), |
| 160 | sa.Column("actor", sa.String(255), nullable=False), |
| 161 | sa.Column("description", sa.Text(), nullable=False, server_default=""), |
| 162 | sa.Column("event_metadata", sa.JSON(), nullable=False, server_default="{}"), |
| 163 | sa.Column("created_at", sa.DateTime(timezone=True), nullable=False, server_default=sa.func.now()), |
| 164 | ) |
| 165 | op.create_index("ix_musehub_events_repo_id", "musehub_events", ["repo_id"]) |
| 166 | op.create_index("ix_musehub_events_event_type", "musehub_events", ["event_type"]) |
| 167 | op.create_index("ix_musehub_events_created_at", "musehub_events", ["created_at"]) |
| 168 | |
| 169 | op.create_table( |
| 170 | "musehub_render_jobs", |
| 171 | sa.Column("render_job_id", sa.String(36), primary_key=True), |
| 172 | sa.Column("repo_id", sa.String(36), sa.ForeignKey("musehub_repos.repo_id", ondelete="CASCADE"), nullable=False), |
| 173 | sa.Column("commit_id", sa.String(64), nullable=False), |
| 174 | sa.Column("status", sa.String(20), nullable=False, server_default="pending"), |
| 175 | sa.Column("error_message", sa.Text(), nullable=True), |
| 176 | sa.Column("artifact_count", sa.Integer(), nullable=False, server_default="0"), |
| 177 | sa.Column("audio_object_ids", sa.JSON(), nullable=False, server_default="[]"), |
| 178 | sa.Column("preview_object_ids", sa.JSON(), nullable=False, server_default="[]"), |
| 179 | sa.Column("created_at", sa.DateTime(timezone=True), nullable=False, server_default=sa.func.now()), |
| 180 | sa.Column("updated_at", sa.DateTime(timezone=True), nullable=False, server_default=sa.func.now()), |
| 181 | sa.UniqueConstraint("repo_id", "commit_id", name="uq_musehub_render_jobs_repo_commit"), |
| 182 | ) |
| 183 | op.create_index("ix_musehub_render_jobs_repo_id", "musehub_render_jobs", ["repo_id"]) |
| 184 | op.create_index("ix_musehub_render_jobs_commit_id", "musehub_render_jobs", ["commit_id"]) |
| 185 | op.create_index("ix_musehub_render_jobs_status", "musehub_render_jobs", ["status"]) |
| 186 | |
| 187 | op.create_table( |
| 188 | "musehub_health_snapshots", |
| 189 | sa.Column("snapshot_id", sa.String(36), primary_key=True), |
| 190 | sa.Column("repo_id", sa.String(36), sa.ForeignKey("musehub_repos.repo_id", ondelete="CASCADE"), nullable=False), |
| 191 | sa.Column("ref", sa.String(64), nullable=False), |
| 192 | sa.Column("score", sa.Float(), nullable=True), |
| 193 | sa.Column("breakage_count", sa.Integer(), nullable=False, server_default="0"), |
| 194 | sa.Column("dead_code_count", sa.Integer(), nullable=False, server_default="0"), |
| 195 | sa.Column("type_coverage", sa.Float(), nullable=True), |
| 196 | sa.Column("test_gap_count", sa.Integer(), nullable=False, server_default="0"), |
| 197 | sa.Column("blast_risk_p95", sa.Float(), nullable=True), |
| 198 | sa.Column("computed_at", sa.DateTime(timezone=True), nullable=False, server_default=sa.func.now()), |
| 199 | ) |
| 200 | op.create_index("ix_health_snapshots_repo_id", "musehub_health_snapshots", ["repo_id"]) |
| 201 | |
| 202 | op.create_table( |
| 203 | "musehub_forks", |
| 204 | sa.Column("fork_id", sa.String(36), primary_key=True), |
| 205 | sa.Column("source_repo_id", sa.String(36), sa.ForeignKey("musehub_repos.repo_id", ondelete="CASCADE"), nullable=False), |
| 206 | sa.Column("fork_repo_id", sa.String(36), sa.ForeignKey("musehub_repos.repo_id", ondelete="CASCADE"), nullable=False), |
| 207 | sa.Column("forked_by", sa.String(255), nullable=False), |
| 208 | sa.Column("created_at", sa.DateTime(timezone=True), nullable=False, server_default=sa.func.now()), |
| 209 | sa.UniqueConstraint("source_repo_id", "fork_repo_id", name="uq_musehub_forks"), |
| 210 | ) |
| 211 | op.create_index("ix_musehub_forks_source_repo_id", "musehub_forks", ["source_repo_id"]) |
| 212 | op.create_index("ix_musehub_forks_fork_repo_id", "musehub_forks", ["fork_repo_id"]) |
File History
1 commit
sha256:a10adeeb7a0169cb9900f9806ed7a973047258abb6283724fe55e8eb68ff3f0a
init: musehub initial commit
Human
171 days ago