40 lines
1.9 KiB
MySQL
40 lines
1.9 KiB
MySQL
|
|
-- =====================================================================
|
||
|
|
-- TeeCup — rundevisibilitet for frittstående runder (migrasjon 032,
|
||
|
|
-- ADR-036 fase 2)
|
||
|
|
-- =====================================================================
|
||
|
|
-- round.visibility_mode ('public'/'private'/'friends', default 'private'
|
||
|
|
-- -- trygg standard, samme filosofi som RLS-policyenes "se ingenting" ved
|
||
|
|
-- manglende kontekst). Ved 'friends' velges EKSPLISITT hvilke av eierens
|
||
|
|
-- private kategorier (samme faste sett som friend_categorization,
|
||
|
|
-- migrasjon 025) som får se runden -- ikke "alle venner".
|
||
|
|
--
|
||
|
|
-- Styrer KUN tredjeparts innsyn (venner/offentligheten) -- en faktisk
|
||
|
|
-- lagt-til medspiller (round_participant.user_id) ser alltid runden
|
||
|
|
-- uansett visibility_mode, uendret av denne migrasjonen.
|
||
|
|
--
|
||
|
|
-- Ingen RLS, samme `plain_connection()`-mønster som resten av
|
||
|
|
-- runde-/venne-tabellene (ADR-033 Beslutning A) -- autorisasjon
|
||
|
|
-- håndheves i app-laget.
|
||
|
|
-- =====================================================================
|
||
|
|
|
||
|
|
\set ON_ERROR_STOP on
|
||
|
|
|
||
|
|
ALTER TABLE round ADD COLUMN visibility_mode text NOT NULL DEFAULT 'private'
|
||
|
|
CHECK (visibility_mode IN ('public', 'private', 'friends'));
|
||
|
|
|
||
|
|
CREATE TABLE round_visible_category (
|
||
|
|
round_id uuid NOT NULL REFERENCES round(id) ON DELETE CASCADE,
|
||
|
|
-- Samme faste kategori-sett som friend_categorization (migrasjon 025)
|
||
|
|
-- -- bevisst duplisert CHECK fremfor en delt ENUM-type, samme
|
||
|
|
-- pragmatiske mønster som resten av skjemaet (BAG_CLUBS/gender/
|
||
|
|
-- stat_level m.fl. er alle CHECK-baserte, ikke ENUM).
|
||
|
|
category text NOT NULL CHECK (category IN (
|
||
|
|
'spouse', 'close_family', 'extended_family', 'close_friends',
|
||
|
|
'golf_friends', 'colleagues', 'business', 'classmates',
|
||
|
|
'acquaintances', 'other'
|
||
|
|
)),
|
||
|
|
PRIMARY KEY (round_id, category)
|
||
|
|
);
|
||
|
|
|
||
|
|
GRANT SELECT, INSERT, UPDATE, DELETE ON round_visible_category TO teecup_app;
|