"""Ajoute l'expiration facultative des partages. Migration volontairement additive : une seule colonne nullable et son index. Aucune ligne n'est reecrite, aucune table n'est recreee, aucune donnee n'est perdue. Les partages existants recoivent `expires_at = NULL`, c'est-a-dire "pas d'expiration", et restent donc valides exactement comme avant. Revision ID: 0002_share_expiry Revises: 0001_initial_schema """ from __future__ import annotations import sqlalchemy as sa from alembic import op revision = "0002_share_expiry" down_revision = "0001_initial_schema" branch_labels = None depends_on = None def upgrade() -> None: op.add_column( "shared_maps", sa.Column("expires_at", sa.DateTime(timezone=True), nullable=True), ) op.create_index("ix_shared_maps_expires_at", "shared_maps", ["expires_at"]) def downgrade() -> None: op.drop_index("ix_shared_maps_expires_at", table_name="shared_maps") op.drop_column("shared_maps", "expires_at")