"""recipe_tasks.acquisition_json (#97) recipe_tasks.acquisition_json: camera e modo di analisi scelti nel task, {"camera_url", "camera_source", "modo": "impulsiva" | "in_linea"}; NULL = la camera della stazione dell'operatore, analisi impulsiva (come prima). Revision ID: 021_task_acquisition Revises: 020_station_camera Create Date: 2026-10-24 """ from typing import Sequence, Union from alembic import op import sqlalchemy as sa revision: str = '021_task_acquisition' down_revision: Union[str, None] = '020_station_camera' branch_labels: Union[str, Sequence[str], None] = None depends_on: Union[str, Sequence[str], None] = None def upgrade() -> None: # batch_alter_table come nelle migrazioni vicine: serve a SQLite with op.batch_alter_table('recipe_tasks') as batch: batch.add_column(sa.Column('acquisition_json', sa.JSON(), nullable=True)) def downgrade() -> None: with op.batch_alter_table('recipe_tasks') as batch: batch.drop_column('acquisition_json')