"""INV-007: personenbezogene Ausgabe/Rueckgabe von Material/Leihgeraeten. Revision ID: 0021_ausgabe Revises: 0020_sollmenge_vorlage Create Date: 2026-09-06 """ from typing import Sequence, Union from alembic import op revision: str = "0021_ausgabe" down_revision: Union[str, None] = "0020_sollmenge_vorlage" branch_labels: Union[str, Sequence[str], None] = None depends_on: Union[str, Sequence[str], None] = None def upgrade() -> None: op.execute("CREATE TYPE ausgabe_status AS ENUM ('offen', 'zurueck')") op.execute( """ CREATE TABLE ausgabe ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), material_id INTEGER NOT NULL REFERENCES material(id), geraet_instanz_id UUID REFERENCES geraet_instanz(id), menge NUMERIC NOT NULL, empfaenger_id INTEGER NOT NULL REFERENCES benutzer(id), ausgegeben_von INTEGER NOT NULL REFERENCES benutzer(id), ausgegeben_am TIMESTAMPTZ NOT NULL, rueckgabe_am TIMESTAMPTZ, status ausgabe_status NOT NULL DEFAULT 'offen', zweck TEXT ) """ ) op.execute("CREATE INDEX idx_ausgabe_empfaenger ON ausgabe (empfaenger_id)") op.execute("CREATE INDEX idx_ausgabe_status ON ausgabe (status)") def downgrade() -> None: op.execute("DROP TABLE ausgabe") op.execute("DROP TYPE ausgabe_status")