"""Add approval ticket consumption fields. Revision ID: 202607060002 Revises: 202607060001 Create Date: 2026-07-06 """ from alembic import op import sqlalchemy as sa from sqlalchemy import inspect revision = "202607060002" down_revision = "202607060001" branch_labels = None depends_on = None APPROVAL_REQUESTS_TABLE = "approval_requests" USED_BY_COLUMN = "used_by" USED_AT_COLUMN = "used_at" def _column_names() -> set[str]: inspector = inspect(op.get_bind()) return { column["name"] for column in inspector.get_columns(APPROVAL_REQUESTS_TABLE) } def upgrade() -> None: columns = _column_names() if USED_BY_COLUMN not in columns: op.add_column( APPROVAL_REQUESTS_TABLE, sa.Column(USED_BY_COLUMN, sa.String(length=128), nullable=True), ) op.create_index( op.f("ix_approval_requests_used_by"), APPROVAL_REQUESTS_TABLE, [USED_BY_COLUMN], unique=False, ) if USED_AT_COLUMN not in columns: op.add_column( APPROVAL_REQUESTS_TABLE, sa.Column(USED_AT_COLUMN, sa.DateTime(), nullable=True), ) def downgrade() -> None: columns = _column_names() if USED_BY_COLUMN in columns: op.drop_index(op.f("ix_approval_requests_used_by"), table_name=APPROVAL_REQUESTS_TABLE) op.drop_column(APPROVAL_REQUESTS_TABLE, USED_BY_COLUMN) if USED_AT_COLUMN in columns: op.drop_column(APPROVAL_REQUESTS_TABLE, USED_AT_COLUMN)