teecup/058_round_messages.sql

44 lines
2.2 KiB
MySQL
Raw Normal View History

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