"""Suppression des disponibilités déclarées Revision ID: 0022_drop_availability Revises: 0021_payment_option_free_amount Create Date: 2026-10-05 Les fenêtres de disponibilité (`availability`) disparaissent, avec la règle `OUTSIDE_AVAILABILITY` qui les exploitait. Les données existantes sont perdues : le `downgrade` recrée la table vide. La case « je suis disponible » du formulaire public (`volunteer.self_declared_available`) n'est pas concernée. """ from collections.abc import Sequence import sqlalchemy as sa from alembic import op revision: str = "0022_drop_availability" down_revision: str | None = "0021_payment_option_free_amount" branch_labels: str | Sequence[str] | None = None depends_on: str | Sequence[str] | None = None def upgrade() -> None: op.drop_index(op.f("ix_availability_volunteer_id"), table_name="availability") op.drop_index(op.f("ix_availability_edition_id"), table_name="availability") op.drop_table("availability") def downgrade() -> None: op.create_table( "availability", sa.Column("created_at", sa.DateTime(), nullable=False), sa.Column("updated_at", sa.DateTime(), nullable=False), sa.Column("id", sa.Uuid(), nullable=False), sa.Column("edition_id", sa.Uuid(), nullable=False), sa.Column("volunteer_id", sa.Uuid(), nullable=False), sa.Column("date", sa.Date(), nullable=False), sa.Column("start_time", sa.Time(), nullable=False), sa.Column("end_time", sa.Time(), nullable=False), sa.ForeignKeyConstraint(["edition_id"], ["edition.id"], ondelete="CASCADE"), sa.ForeignKeyConstraint(["volunteer_id"], ["volunteer.id"], ondelete="CASCADE"), sa.PrimaryKeyConstraint("id"), sa.UniqueConstraint( "volunteer_id", "date", "start_time", "end_time", name="uq_availability_window", ), ) op.create_index( op.f("ix_availability_edition_id"), "availability", ["edition_id"], unique=False ) op.create_index( op.f("ix_availability_volunteer_id"), "availability", ["volunteer_id"], unique=False )