mirror of
https://github.com/rennf93/roboco.git
synced 2026-08-03 07:23:24 +02:00
44 lines
1.2 KiB
Python
44 lines
1.2 KiB
Python
"""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")
|