Files
MoviePilot/database/versions/d5e6f7a8b9c0_2_2_8.py

51 lines
1.6 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""2.2.8
修复 episode_priority 列类型PostgreSQL 下若列为 INTEGER 则重建为 JSON
Revision ID: d5e6f7a8b9c0
Revises: 1f0d2c3b4a5e
Create Date: 2026-06-04
"""
from alembic import op
import sqlalchemy as sa
revision = "d5e6f7a8b9c0"
down_revision = "1f0d2c3b4a5e"
branch_labels = None
depends_on = None
def _has_column(inspector: sa.Inspector, table_name: str, column_name: str) -> bool:
if table_name not in inspector.get_table_names():
return False
return any(column["name"] == column_name for column in inspector.get_columns(table_name))
def _fix_episode_priority_type(bind, table_name: str) -> None:
"""On PostgreSQL, if episode_priority exists but is not JSON/JSONB, drop and re-add it as JSON."""
if bind.dialect.name != "postgresql":
return
inspector = sa.inspect(bind)
if not _has_column(inspector, table_name, "episode_priority"):
op.add_column(table_name, sa.Column("episode_priority", sa.JSON(), nullable=True))
return
for col in inspector.get_columns(table_name):
if col["name"] != "episode_priority":
continue
type_name = type(col["type"]).__name__.upper()
if type_name in ("JSON", "JSONB"):
return
op.drop_column(table_name, "episode_priority")
op.add_column(table_name, sa.Column("episode_priority", sa.JSON(), nullable=True))
return
def upgrade() -> None:
bind = op.get_bind()
_fix_episode_priority_type(bind, "subscribe")
_fix_episode_priority_type(bind, "subscribehistory")
def downgrade() -> None:
pass