-- =====================================================================
--  TeeCup — Kommentarer/bilder på frittstående runder, migrasjon 058
--  (ADR-044).
--
--  Samme idé som org-turneringers "Banter Board" (message-tabellen,
--  migrasjon 013, ADR-025) -- forfatter-snapshot, valgfri tekst, valgfritt
--  bilde -- men EGEN tabell, ikke en utvidelse av `message`. `round` er
--  IKKE org-scopet og har INGEN RLS (ADR-033 Beslutning A), så den delte
--  message-tabellens organization_id NOT NULL + RLS-policy passer ikke
--  uendret her.
--
--  Autorisasjon (ADR-044 Beslutning A): ALLE som kan SE runden
--  (_can_view_round i app/routers/rounds.py -- eier, lenket medspiller,
--  eller en venn/offentlighet med visibility_mode-tilgang) kan også
--  POSTE. Samme "kan se = kan bidra"-modell som org-feeden, håndhevet i
--  app-laget (app/routers/round_messages.py), ikke her i skjemaet.
-- =====================================================================
\set ON_ERROR_STOP on

CREATE TABLE round_message (
    id                   uuid PRIMARY KEY DEFAULT gen_random_uuid(),
    round_id             uuid NOT NULL REFERENCES round(id) ON DELETE CASCADE,
    author_user_id       uuid NOT NULL REFERENCES app_user(id),
    -- Frosset ved skrivetidspunkt, samme prinsipp som message.author_display_name
    -- -- her FULLT NAVN (ikke fornavn alene, dette er en forfatter-liste,
    -- ikke direkte adressering av mottakeren -- CLAUDE.md navneformat-regel).
    author_display_name text NOT NULL,
    body                 text,
    image_key            text,
    created_at           timestamptz NOT NULL DEFAULT now(),

    CHECK (body IS NOT NULL OR image_key IS NOT NULL)
);

CREATE INDEX round_message_round_idx ON round_message (round_id, created_at);
CREATE INDEX round_message_author_idx ON round_message (author_user_id);

-- INGEN RLS -- samme plain_connection()-mønster som round/round_participant/
-- round_hole (ADR-033 Beslutning A). Autorisasjon håndheves eksplisitt i
-- app-laget via round_id-oppslag + _can_view_round, ikke database-policy.
GRANT SELECT, INSERT, DELETE ON round_message TO teecup_app;
-- Ingen UPDATE-grant -- meldinger redigeres ikke, kun slettes, samme som
-- den org-scopede message-tabellen.
