Files
MoviePilot/database/versions/e3d9f4b7c806_3_0_4.py
T

58 lines
1.6 KiB
Python

"""3.0.4
新增待整理文件登记表
整理队列是纯内存的 queue.Queue,进程重启会让队列里的任务连同「这些文件还没
整理」这个事实一起蒸发,而已稳定落地的文件不会再产生任何监控事件,等于永久
漏件。该表只登记「存储 + 源文件路径」这一最小事实,供启动时回放。
Revision ID: e3d9f4b7c806
Revises: 7f5c1d2e3a4b
Create Date: 2026-08-10
"""
from alembic import op
import sqlalchemy as sa
revision = "e3d9f4b7c806"
down_revision = "7f5c1d2e3a4b"
branch_labels = None
depends_on = None
def _has_table(table_name: str) -> bool:
"""检查数据表是否已存在。"""
inspector = sa.inspect(op.get_bind())
return table_name in inspector.get_table_names()
def upgrade() -> None:
"""
创建待整理文件登记表。
"""
if _has_table("transferpending"):
return
op.create_table(
"transferpending",
sa.Column("id", sa.Integer, primary_key=True, autoincrement=True),
sa.Column("storage", sa.String, nullable=False),
sa.Column("src_path", sa.String, nullable=False),
sa.Column("created_at", sa.String),
)
# 同一个文件重复入队只保留一条,回放时不会重复送入整理链
op.create_index(
"ux_transferpending_storage_path",
"transferpending",
["storage", "src_path"],
unique=True,
)
def downgrade() -> None:
"""
删除待整理文件登记表。
"""
if not _has_table("transferpending"):
return
op.drop_index("ux_transferpending_storage_path", table_name="transferpending")
op.drop_table("transferpending")