"""add series table(补漏:线上表已存在,此前无迁移,新环境部署会缺表) Revision ID: e7a1f3c58d02 Revises: c8f2a15e93b7 Create Date: 2026-10-18 21:00:00.000000 """ from alembic import op import sqlalchemy as sa from sqlalchemy.dialects import mysql revision = 'e7a1f3c58d02' down_revision = 'c8f2a15e93b7' branch_labels = None depends_on = None def upgrade() -> None: op.create_table( 'series', sa.Column('id', mysql.BIGINT(unsigned=True), autoincrement=True, nullable=False), sa.Column('title', sa.String(length=100), nullable=False, comment='系列标题'), sa.Column('cover_url', sa.String(length=500), nullable=False, server_default='', comment='封面'), sa.Column('description', sa.String(length=500), nullable=False, server_default='', comment='简介'), sa.Column('author_id', mysql.BIGINT(unsigned=True), nullable=True, comment='作者'), sa.Column('category_id', sa.Integer(), nullable=False, server_default='0'), sa.Column('total_episodes', sa.Integer(), nullable=False, server_default='0'), sa.Column('view_count', mysql.BIGINT(), nullable=False, server_default='0'), sa.Column('status', mysql.TINYINT(), nullable=False, server_default='1', comment='1正常 0下架'), sa.Column('created_at', sa.DateTime(), nullable=False, server_default=sa.func.current_timestamp()), sa.Column('updated_at', sa.DateTime(), nullable=False, server_default=sa.func.current_timestamp(), onupdate=sa.func.current_timestamp()), sa.PrimaryKeyConstraint('id'), ) op.create_index('idx_cat_status', 'series', ['category_id', 'status']) op.create_index('idx_status_created', 'series', ['status', 'created_at']) def downgrade() -> None: op.drop_index('idx_status_created', table_name='series') op.drop_index('idx_cat_status', table_name='series') op.drop_table('series')