-- ===================================================================== -- 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.