"""Fahrzeug-Spezialfelder (Roadmap Phase 3: BOS-Ressourcenplattform-Anforderung Modul 2 "Fahrzeuge"). Kennzeichen/Funkrufname/Kilometerstand/Betriebsstunden/ Baujahr/HU/UVV als optionale 1:1-Erweiterung zu Objekt (nicht jeder Objekttyp braucht das, nur Zugfahrzeuge - additiv, kein eigener Fahrzeug-Objekttyp erzwungen, Karte 11 bleibt gültig). Zusätzlich objekt_status um 'in_wartung' erweitert (Nutzer-Vorgabe: 5-stufiger Fahrzeug-Status). ALTER TYPE ... ADD VALUE muss außerhalb der laufenden Transaktion committen (Postgres-Einschränkung), daher AUTOCOMMIT-Block. Revision ID: 0014_fahrzeugdetails Revises: 0013_mangel Create Date: 2026-09-05 """ from typing import Sequence, Union from alembic import op revision: str = "0014_fahrzeugdetails" down_revision: Union[str, None] = "0013_mangel" branch_labels: Union[str, Sequence[str], None] = None depends_on: Union[str, Sequence[str], None] = None def upgrade() -> None: with op.get_context().autocommit_block(): op.execute("ALTER TYPE objekt_status ADD VALUE IF NOT EXISTS 'in_wartung'") op.execute( """ CREATE TABLE fahrzeugdetails ( objekt_id INTEGER PRIMARY KEY REFERENCES objekt(id), kennzeichen TEXT, funkrufname TEXT, baujahr INTEGER, kilometerstand INTEGER, betriebsstunden NUMERIC, naechste_hu DATE, naechste_uvv DATE ) """ ) def downgrade() -> None: op.execute("DROP TABLE fahrzeugdetails") # 'in_wartung' aus dem ENUM zu entfernen ist in Postgres nicht direkt möglich # (kein ALTER TYPE ... DROP VALUE) - bewusst nicht rückgängig gemacht, siehe # Muster in 0001_initial_schema (dort ebenfalls nur DROP TYPE als Ganzes).