-- Migration 041: Status history tables, booking ganztaegig flag
-- Adds vehicle/equipment status change tracking and whole-day booking support.

-- ═══════════════════════════════════════════════════════════════════════════
-- 1. Vehicle Status Change History
-- ═══════════════════════════════════════════════════════════════════════════

CREATE TABLE IF NOT EXISTS fahrzeug_status_historie (
  id              SERIAL       PRIMARY KEY,
  fahrzeug_id     UUID         NOT NULL REFERENCES fahrzeuge(id) ON DELETE CASCADE,
  alter_status    TEXT         NOT NULL,
  neuer_status    TEXT         NOT NULL,
  bemerkung       TEXT,
  geaendert_von   UUID         REFERENCES users(id) ON DELETE SET NULL,
  erstellt_am     TIMESTAMPTZ  NOT NULL DEFAULT NOW()
);

CREATE INDEX IF NOT EXISTS idx_fahrzeug_status_historie_fahrzeug ON fahrzeug_status_historie(fahrzeug_id);
CREATE INDEX IF NOT EXISTS idx_fahrzeug_status_historie_zeit ON fahrzeug_status_historie(erstellt_am DESC);

-- ═══════════════════════════════════════════════════════════════════════════
-- 2. Equipment Status Change History
-- ═══════════════════════════════════════════════════════════════════════════

CREATE TABLE IF NOT EXISTS ausruestung_status_historie (
  id              SERIAL       PRIMARY KEY,
  ausruestung_id  UUID         NOT NULL REFERENCES ausruestung(id) ON DELETE CASCADE,
  alter_status    TEXT         NOT NULL,
  neuer_status    TEXT         NOT NULL,
  bemerkung       TEXT,
  geaendert_von   UUID         REFERENCES users(id) ON DELETE SET NULL,
  erstellt_am     TIMESTAMPTZ  NOT NULL DEFAULT NOW()
);

CREATE INDEX IF NOT EXISTS idx_ausruestung_status_historie_ausr ON ausruestung_status_historie(ausruestung_id);
CREATE INDEX IF NOT EXISTS idx_ausruestung_status_historie_zeit ON ausruestung_status_historie(erstellt_am DESC);

-- ═══════════════════════════════════════════════════════════════════════════
-- 3. Whole-day booking flag
-- ═══════════════════════════════════════════════════════════════════════════

ALTER TABLE fahrzeug_buchungen ADD COLUMN IF NOT EXISTS ganztaegig BOOLEAN DEFAULT FALSE;
