-- ====================================================================
-- 0050_employee_extra_fields — Frei definierbare Zusatzangaben
-- ====================================================================
-- Mitarbeiter können beliebig viele weitere Telefonnummern und private
-- Angaben hinterlegen, jeweils ein-/ausblendbar. Statt vieler fester
-- Spalten eine JSONB-Liste:
--   [{ "id": "f0", "kind": "phone|mobile|email|address|text",
--      "label": "Festnetz privat", "value": "...", "visible": true }, …]
--
-- Sichtbarkeit wird wie bei show_mobile serverseitig im Render/vCard
-- gefiltert (visibleExtraFields). Die öffentliche Karte liest seit 0045
-- ohnehin per Service-Role — anon braucht die Spalte nicht und soll sie
-- (ausgeblendete, ggf. private Werte) auch nicht lesen können.

alter table public.employees
  add column if not exists extra_fields jsonb not null default '[]'::jsonb;

comment on column public.employees.extra_fields is
  'Frei definierbare Zusatzangaben (weitere Telefonnummern, private Angaben). '
  'Liste von {id, kind, label, value, visible}. Sichtbarkeit pro Eintrag; '
  'serverseitige Filterung im Render/vCard. Siehe lib/extra-fields.ts.';

-- anon darf die Spalte nicht direkt lesen (könnte ausgeblendete/private
-- Einträge enthalten). REVOKE auf nicht vorhandenen Grant ist ein No-op.
revoke select (extra_fields) on public.employees from anon;
