-- Migration: Erstelle page_views Tabelle für Web-Analytics
-- Datum: 2026-04-17
-- Zweck: Protokollierung von Seitenaufrufen, Verweildauer, Browser, Gerät, anonymisierte IP

CREATE TABLE IF NOT EXISTS page_views (
  id          uuid        PRIMARY KEY DEFAULT gen_random_uuid(),
  path        text        NOT NULL,
  timestamp   timestamptz NOT NULL DEFAULT now(),
  ip_anon     text,                          -- IPv4: x.x.x.0 (DSGVO-anonymisiert)
  device_type text        CHECK (device_type IN ('desktop','tablet','mobile')),
  browser     text,                          -- Chrome/Firefox/Safari/Edge/Opera/Other
  os          text,                          -- Windows/macOS/iOS/Android/Linux/Other
  referrer    text,
  session_id  text        NOT NULL,          -- UUID aus sessionStorage
  duration_ms int,                           -- Verweildauer in Millisekunden
  is_bot      boolean     NOT NULL DEFAULT false
);

-- Indizes für häufige Analytics-Abfragen
CREATE INDEX IF NOT EXISTS idx_pv_timestamp   ON page_views (timestamp DESC);
CREATE INDEX IF NOT EXISTS idx_pv_path        ON page_views (path);
CREATE INDEX IF NOT EXISTS idx_pv_session     ON page_views (session_id);
CREATE INDEX IF NOT EXISTS idx_pv_is_bot      ON page_views (is_bot) WHERE is_bot = false;
CREATE INDEX IF NOT EXISTS idx_pv_path_date   ON page_views (path, timestamp DESC) WHERE is_bot = false;

-- RLS: Nur Service-Role kann schreiben, Reads später für Admin
ALTER TABLE page_views ENABLE ROW LEVEL SECURITY;

CREATE POLICY "Service-Role Vollzugriff" ON page_views
  USING (true)
  WITH CHECK (true);

-- Automatisches Cleanup nach 13 Monaten (DSGVO-Datensparsamkeit)
-- Kann via Supabase scheduled function oder pg_cron ausgelöst werden
-- HINWEIS: Diesen Query regelmäßig per Cron Job aufrufen:
-- DELETE FROM page_views WHERE timestamp < now() - interval '13 months';
