Newer
Older
gnexus-tasks / backend / alembic / versions / a5b6c7d8e9f0_project_archive.py
"""Архив проектов (ТЗ 3.11): поле is_archived.

«Закрыт» (relevance_status='archived') уходит: такие проекты переезжают
в архив (is_archived=True, relevance_status='active') — история сохраняется,
из рабочих видов пропадают.
"""

from collections.abc import Sequence

import sqlalchemy as sa

from alembic import op

# revision identifiers, used by Alembic.
revision: str = "a5b6c7d8e9f0"
down_revision: str | Sequence[str] | None = "b3c4d5e6f7a8"
branch_labels: str | Sequence[str] | None = None
depends_on: str | Sequence[str] | None = None


def upgrade() -> None:
    op.add_column(
        "projects",
        sa.Column("is_archived", sa.Boolean(), nullable=False, server_default=sa.false()),
    )
    op.execute(
        "UPDATE projects SET is_archived = true, relevance_status = 'active'"
        " WHERE relevance_status = 'archived'"
    )


def downgrade() -> None:
    op.execute(
        "UPDATE projects SET relevance_status = 'archived' WHERE is_archived = true"
    )
    op.drop_column("projects", "is_archived")