"""Add travel-retail-exclusive flag and clear feed-derived categories

Categories are now assigned from a shared consumer vocabulary rather than
whatever each retailer feed emitted. Existing rows are cleared so the next
collection reclassifies them, instead of leaving old feed labels to drift
alongside the new ones.

Revision ID: b2c3d4e5f6a7
Revises: a1b2c3d4e5f6
"""
from collections.abc import Sequence

import sqlalchemy as sa
from alembic import op

revision: str = "b2c3d4e5f6a7"
down_revision: str | None = "a1b2c3d4e5f6"
branch_labels: str | Sequence[str] | None = None
depends_on: str | Sequence[str] | None = None


def upgrade() -> None:
    op.add_column(
        "products",
        sa.Column("is_exclusive", sa.Boolean(), nullable=False, server_default=sa.false()),
    )
    op.execute("UPDATE products SET category = NULL")


def downgrade() -> None:
    op.drop_column("products", "is_exclusive")
