"""printer lifecycle fields and printer_logs table Revision ID: 0003 Revises: 0002 Create Date: 2026-06-18 """ from typing import Sequence, Union import sqlalchemy as sa from alembic import op revision: str = "0003" down_revision: Union[str, None] = "0002" branch_labels: Union[str, Sequence[str], None] = None depends_on: Union[str, Sequence[str], None] = None def upgrade() -> None: op.add_column("printers", sa.Column("bought_at", sa.Date(), nullable=True)) op.add_column("printers", sa.Column("last_maintenance_at", sa.Date(), nullable=True)) op.add_column("printers", sa.Column("decommissioned_at", sa.Date(), nullable=True)) op.create_table( "printer_logs", sa.Column("id", sa.Integer(), autoincrement=True, nullable=False), sa.Column("printer_id", sa.Integer(), nullable=False), sa.Column("message", sa.Text(), nullable=False), sa.Column("created_at", sa.DateTime(), nullable=False, server_default=sa.text("CURRENT_TIMESTAMP")), sa.ForeignKeyConstraint(["printer_id"], ["printers.id"], name="fk_log_printer", ondelete="CASCADE"), sa.PrimaryKeyConstraint("id"), ) def downgrade() -> None: op.drop_table("printer_logs") op.drop_column("printers", "decommissioned_at") op.drop_column("printers", "last_maintenance_at") op.drop_column("printers", "bought_at")