"""Drop the dead usbcheckouts.machineid column (ADR-001: Machine retired).

machineid was a NOT NULL soft-reference to the retired machines table; every
new checkout stored the sentinel 0. It has no FK, no meaning under the asset
model, and no reader. Drop it.

Idempotent (skips a missing table/column). Downgrade restores it NOT NULL with
server_default 0 so any existing rows stay valid.

Revision ID: usb0002dropmachineid
Revises: usb0001anchor
"""
from alembic import op
import sqlalchemy as sa


revision = 'usb0002dropmachineid'
down_revision = 'usb0001anchor'
branch_labels = None
depends_on = None


def upgrade():
    bind = op.get_bind()
    insp = sa.inspect(bind)
    if 'usbcheckouts' not in insp.get_table_names():
        return
    cols = {c['name'] for c in insp.get_columns('usbcheckouts')}
    if 'machineid' in cols:
        op.drop_column('usbcheckouts', 'machineid')


def downgrade():
    bind = op.get_bind()
    insp = sa.inspect(bind)
    if 'usbcheckouts' not in insp.get_table_names():
        return
    cols = {c['name'] for c in insp.get_columns('usbcheckouts')}
    if 'machineid' not in cols:
        op.add_column('usbcheckouts',
                      sa.Column('machineid', sa.Integer(), nullable=False,
                                server_default='0'))
