"""SNMP devices keep the rows of their vendor tables, and states in words A NAS preset reads a row per disk and volume, found by walking the device's tables; the rows found, when, and each state reading's newest word are kept on the device (milestone 530). Revision ID: snmp_002_table_rows Revises: snmp_001_devices Create Date: 2026-10-17 """ from typing import Sequence, Union import sqlalchemy as sa from alembic import op revision: str = "snmp_002_table_rows" down_revision: Union[str, None] = "snmp_001_devices" branch_labels: Union[str, Sequence[str], None] = None depends_on: Union[str, Sequence[str], None] = None def upgrade() -> None: op.add_column("snmp_devices", sa.Column("tables", sa.JSON, nullable=False, server_default="{}")) op.add_column("snmp_devices", sa.Column("tables_at", sa.DateTime(timezone=True), nullable=True)) op.add_column("snmp_devices", sa.Column("texts", sa.JSON, nullable=False, server_default="{}")) def downgrade() -> None: op.drop_column("snmp_devices", "texts") op.drop_column("snmp_devices", "tables_at") op.drop_column("snmp_devices", "tables")