"""Phase 11: Archivierung von Listen Revision ID: 0013 Revises: 0012 Create Date: 2026-08-08 """ from collections.abc import Sequence import sqlalchemy as sa from alembic import op revision: str = "0013" down_revision: str | None = "0012" branch_labels: str | Sequence[str] | None = None depends_on: str | Sequence[str] | None = None def upgrade() -> None: op.add_column("list_member", sa.Column("archived_at", sa.DateTime(), nullable=True)) op.add_column( "list_member", sa.Column("last_opened_at", sa.DateTime(), nullable=True) ) # Bestandsmitgliedschaften nicht sofort der Automatik aussetzen: # Ohne Startwert waere last_opened_at NULL und damit scheinbar "nie # geoeffnet". Der Beitrittszeitpunkt ist die konservativere Annahme. op.execute( "UPDATE list_member SET last_opened_at = joined_at " "WHERE last_opened_at IS NULL" ) op.add_column("shopping_list", sa.Column("warn_7d_at", sa.DateTime(), nullable=True)) op.add_column("shopping_list", sa.Column("warn_1d_at", sa.DateTime(), nullable=True)) def downgrade() -> None: op.drop_column("shopping_list", "warn_1d_at") op.drop_column("shopping_list", "warn_7d_at") op.drop_column("list_member", "last_opened_at") op.drop_column("list_member", "archived_at")