Kommandoer jeg vil kjøre mot ekte teecup_db/teecup_api/teecup_frontend: psql migrasjon 058_round_messages.sql mot ekte teecup_db (ny round_message-tabell, ingen endring i eksisterende tabeller). docker compose up -d --build teecup_api teecup_frontend (begge containere, siden dette er backend+frontend sammen). Etterpå: bekreft round_message-tabellen finnes, /health//my-rounds/new//my-feed → 200 over https, teeoff.no upåvirket.
43 lines
2.2 KiB
SQL
43 lines
2.2 KiB
SQL
-- =====================================================================
|
|
-- 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.
|