Files
roboco/alembic/versions/053_playbook_archived_attr.py

44 lines
1.2 KiB
Python
Raw Permalink Normal View History

2026-06-30 08:08:35 +02:00
"""Add archived_by / archived_at to playbooks — distinct retirement attribution.
``archive`` (retire an APPROVED playbook) and ``reject`` (decline a DRAFT) both
end in ARCHIVED, but they are distinct curation acts from ``approve``. Stamping
the archiver into ``approved_by``/``approved_at`` overwrote the approval
provenance (and fabricated approval attribution for a rejected draft that was
never approved). These two columns record who retired it and when, leaving
``approved_by``/``approved_at`` to record only the approval.
Revision ID: 053_playbook_archived_attr
Revises: 052_task_cell_projects
Create Date: 2026-06-30
"""
from __future__ import annotations
import sqlalchemy as sa
from alembic import op
revision = "053_playbook_archived_attr"
down_revision = "052_task_cell_projects"
branch_labels = None
depends_on = None
def upgrade() -> None:
op.add_column(
"playbooks",
sa.Column("archived_by", sa.UUID(as_uuid=True), nullable=True),
)
op.add_column(
"playbooks",
sa.Column(
"archived_at",
sa.DateTime(timezone=True),
nullable=True,
),
)
def downgrade() -> None:
op.drop_column("playbooks", "archived_at")
op.drop_column("playbooks", "archived_by")