-- Lead-Capture: Empfänger einer Visitenkarte teilt seine eigenen
-- Kontaktdaten zurück. Der Mitarbeiter sieht das im Admin-Backend.
-- ====================================================================
-- Privacy: keine PII über Trusted-Token, kein Cookie-Tracking.
-- Lead wird mit der Karte verknüpft (employee_id) — der Mitarbeiter
-- (oder Admin) sieht in seiner Detail-Page eine Liste der Leads.
--
-- Spam-Mitigation auf App-Ebene: Honeypot-Feld + Rate-Limit pro IP.
-- Hier nur Datenmodell.

create table if not exists public.card_leads (
  id           uuid primary key default gen_random_uuid(),
  employee_id  uuid not null references public.employees(id) on delete cascade,
  -- Kontaktdaten der Person, die die Karte zurück geteilt hat:
  first_name   text not null,
  last_name    text not null,
  email        text,
  phone        text,
  company      text,
  position     text,
  message      text,
  -- Metadata:
  created_at   timestamptz not null default now(),
  source_url   text,           -- URL der Karte, von der aus geteilt wurde
  read_at      timestamptz,    -- "gelesen" markieren im Admin
  -- DSGVO: explizite Einwilligung muss true sein.
  consent_given boolean not null default false
);

create index if not exists card_leads_employee_id_idx
  on public.card_leads (employee_id, created_at desc);

create index if not exists card_leads_unread_idx
  on public.card_leads (employee_id) where read_at is null;

alter table public.card_leads enable row level security;
-- Service-Role-only — anon kann zwar inserten (über Server Action mit
-- Service-Role), aber nicht lesen.
