"""Партия: общий черновик формы завершения (совместное заполнение результатов). Идемпотентна: на свежей БД таблицу создаёт 0001 (create_all из актуальных моделей) -> no-op; на существующей БД создаёт таблицу. Revision ID: 0012_match_finish_draft Revises: 0011_user_history_prefs Create Date: 2026-09-09 """ from typing import Sequence, Union import sqlalchemy as sa from sqlalchemy import inspect from alembic import op revision: str = "0012_match_finish_draft" down_revision: Union[str, None] = "0011_user_history_prefs" branch_labels: Union[str, Sequence[str], None] = None depends_on: Union[str, Sequence[str], None] = None def upgrade() -> None: bind = op.get_bind() insp = inspect(bind) if "match_finish_drafts" in insp.get_table_names(): return op.create_table( "match_finish_drafts", sa.Column( "match_id", sa.Integer(), sa.ForeignKey("matches.id", ondelete="CASCADE"), primary_key=True, ), sa.Column("data", sa.JSON(), nullable=False), sa.Column( "updated_by", sa.Integer(), sa.ForeignKey("users.id", ondelete="SET NULL"), nullable=True, ), sa.Column("updated_at", sa.DateTime(), nullable=False), ) def downgrade() -> None: bind = op.get_bind() insp = inspect(bind) if "match_finish_drafts" in insp.get_table_names(): op.drop_table("match_finish_drafts")