"""Add SeriesPage table for ordered series/comic reading Revision ID: e26012202 Revises: d26012201 Create Date: 2026-01-22 """ from alembic import op import sqlalchemy as sa # revision identifiers, used by Alembic. revision = 'e26012202' down_revision = 'd26012201' branch_labels = None depends_on = None def upgrade(): # Create series_page table op.create_table( 'series_page', sa.Column('id', sa.Integer(), nullable=False), sa.Column('series_tag_id', sa.Integer(), nullable=False), sa.Column('image_id', sa.Integer(), nullable=False), sa.Column('page_number', sa.Integer(), nullable=False), sa.Column('created_at', sa.DateTime(), nullable=True), sa.Column('updated_at', sa.DateTime(), nullable=True), sa.ForeignKeyConstraint(['series_tag_id'], ['tag.id'], ondelete='CASCADE'), sa.ForeignKeyConstraint(['image_id'], ['image_record.id'], ondelete='CASCADE'), sa.PrimaryKeyConstraint('id'), sa.UniqueConstraint('image_id'), # Image can only be in one series sa.UniqueConstraint('series_tag_id', 'page_number', name='uq_series_page_number') ) op.create_index('ix_series_page_series_tag', 'series_page', ['series_tag_id'], unique=False) def downgrade(): op.drop_index('ix_series_page_series_tag', table_name='series_page') op.drop_table('series_page')