"""DOC-001: SHA-256-Hash am Dokument für Duplikat-Erkennung beim Upload. Revision ID: 0024_dokument_hash Revises: 0023_suchindex Create Date: 2026-09-08 """ from typing import Sequence, Union from alembic import op revision: str = "0024_dokument_hash" down_revision: Union[str, None] = "0023_suchindex" branch_labels: Union[str, Sequence[str], None] = None depends_on: Union[str, Sequence[str], None] = None def upgrade() -> None: # Nullable: Altbestand vor dieser Migration hat keinen Hash (nachträgliche # Befüllung würde Dateizugriff je Dokument brauchen, kein Datenverlust- # Risiko - Duplikatprüfung greift nur für Dokumente, die NACH dieser # Migration hochgeladen werden). op.execute("ALTER TABLE dokument ADD COLUMN dateihash VARCHAR(64)") op.execute( "CREATE INDEX ix_dokument_entitaet_hash ON dokument (entitaet_typ, entitaet_id, dateihash)" ) def downgrade() -> None: op.execute("DROP INDEX IF EXISTS ix_dokument_entitaet_hash") op.execute("ALTER TABLE dokument DROP COLUMN dateihash")