"""0055_dmca_hold_missing_tables Revision ID: 0055 Revises: 0054 Create Date: 2026-05-11 20:09:22.365298+00:00 """ from __future__ import annotations from typing import Sequence, Union from alembic import op import sqlalchemy as sa from sqlalchemy.dialects import postgresql # revision identifiers, used by Alembic. revision: str = '0055' down_revision: Union[str, None] = '0054' branch_labels: Union[str, Sequence[str], None] = None depends_on: Union[str, Sequence[str], None] = None def upgrade() -> None: # ### commands auto generated by Alembic - please adjust! ### op.create_table('musehub_blocked_hashes', sa.Column('object_id', sa.String(length=128), nullable=False), sa.Column('reason', sa.Text(), nullable=True), sa.Column('added_by', sa.String(length=128), nullable=True), sa.Column('added_at', sa.DateTime(timezone=True), nullable=False), sa.PrimaryKeyConstraint('object_id') ) op.create_table('musehub_daily_push_bytes', sa.Column('identity_id', sa.String(length=128), nullable=False), sa.Column('date', sa.Date(), nullable=False), sa.Column('bytes_uploaded', sa.BigInteger(), nullable=False), sa.Column('updated_at', sa.DateTime(timezone=True), nullable=False), sa.PrimaryKeyConstraint('identity_id', 'date') ) op.create_index('ix_daily_push_bytes_identity_date', 'musehub_daily_push_bytes', ['identity_id', 'date'], unique=False) op.create_table('musehub_push_anomalies', sa.Column('anomaly_id', sa.String(length=128), nullable=False), sa.Column('identity_id', sa.String(length=128), nullable=False), sa.Column('detected_at', sa.DateTime(timezone=True), nullable=False), sa.Column('bytes_today', sa.BigInteger(), nullable=False), sa.Column('rolling_avg_bytes', sa.Float(), nullable=False), sa.Column('ratio', sa.Float(), nullable=False), sa.PrimaryKeyConstraint('anomaly_id') ) op.create_index(op.f('ix_musehub_push_anomalies_identity_id'), 'musehub_push_anomalies', ['identity_id'], unique=False) op.create_index('ix_push_anomalies_identity', 'musehub_push_anomalies', ['identity_id'], unique=False) op.create_table('musehub_stream_rejections', sa.Column('rejection_id', sa.String(length=128), nullable=False), sa.Column('repo_id', sa.String(length=128), nullable=False), sa.Column('identity_id', sa.String(length=128), nullable=True), sa.Column('reason', sa.String(length=32), nullable=False), sa.Column('detail', sa.Text(), nullable=False), sa.Column('rejected_at', sa.DateTime(timezone=True), nullable=False), sa.ForeignKeyConstraint(['repo_id'], ['musehub_repos.repo_id'], ondelete='CASCADE'), sa.PrimaryKeyConstraint('rejection_id') ) op.create_index('ix_stream_rejections_identity', 'musehub_stream_rejections', ['identity_id'], unique=False) op.create_index('ix_stream_rejections_repo', 'musehub_stream_rejections', ['repo_id'], unique=False) op.add_column('musehub_background_jobs', sa.Column('quarantine_reason', sa.Text(), nullable=True)) op.add_column('musehub_repos', sa.Column('dmca_hold', sa.Boolean(), server_default=sa.text('false'), nullable=False)) op.alter_column('musehub_snapshots', 'manifest_blob', existing_type=postgresql.BYTEA(), nullable=True) # ### end Alembic commands ### def downgrade() -> None: # ### commands auto generated by Alembic - please adjust! ### op.alter_column('musehub_snapshots', 'manifest_blob', existing_type=postgresql.BYTEA(), nullable=False) op.drop_column('musehub_repos', 'dmca_hold') op.drop_column('musehub_background_jobs', 'quarantine_reason') op.drop_index('ix_stream_rejections_repo', table_name='musehub_stream_rejections') op.drop_index('ix_stream_rejections_identity', table_name='musehub_stream_rejections') op.drop_table('musehub_stream_rejections') op.drop_index('ix_push_anomalies_identity', table_name='musehub_push_anomalies') op.drop_index(op.f('ix_musehub_push_anomalies_identity_id'), table_name='musehub_push_anomalies') op.drop_table('musehub_push_anomalies') op.drop_index('ix_daily_push_bytes_identity_date', table_name='musehub_daily_push_bytes') op.drop_table('musehub_daily_push_bytes') op.drop_table('musehub_blocked_hashes') # ### end Alembic commands ###