-- Konkurranseklasser (2026-08-03) -- organisator kan opprette fritt navngitte -- klasser (f.eks. "Damer", "Herrer A", "Junior") med et valgfritt -- standardutslag, og knytte deltakere til en klasse. Delt mellom begge -- turneringstyper (samme `tournament`-tabell, ADR-037s format_type-mønster) -- -- én tabell dekker begge, i stedet for to duplikat-tabeller. -- -- Brukt til (bekreftet med bruker FØR bygging): -- 1. Forhåndsutfylle riktig utslag når en spiller legges til en match/runde -- (BÅDE lagturneringer og individuelle turneringer) -- ren frontend- -- bekvemmelighet, tee_id forblir required og eksplisitt i API-kontrakten. -- 2. Egen resultatliste per klasse -- KUN i individuelle turneringer -- (ADR-037, flatt felt). I lagturneringer (ADR-011, to lag) er poeng -- knyttet til hele kamper, ikke enkeltspillere -- klasse er der bevisst -- KUN et utslag-forslag, ingen egen leaderboard-splitting. CREATE TABLE tournament_class ( id uuid PRIMARY KEY DEFAULT gen_random_uuid(), organization_id uuid NOT NULL, tournament_id uuid NOT NULL, name text NOT NULL, default_tee_id uuid, created_at timestamptz NOT NULL DEFAULT now(), FOREIGN KEY (organization_id, tournament_id) REFERENCES tournament (organization_id, id) ON DELETE CASCADE, FOREIGN KEY (default_tee_id) REFERENCES tee (id) ON DELETE RESTRICT, UNIQUE (tournament_id, name) ); CREATE INDEX ON tournament_class (organization_id, tournament_id); -- Nullable -- en klasse er valgfri, og sletter man en klasse skal ikke -- roster-/deltaker-radene forsvinne (samme SET NULL-prinsipp som -- tournament_round_bbb_hole, migrasjon 044). ALTER TABLE team_roster ADD COLUMN class_id uuid REFERENCES tournament_class (id) ON DELETE SET NULL; ALTER TABLE tournament_participant ADD COLUMN class_id uuid REFERENCES tournament_class (id) ON DELETE SET NULL; -- Row-Level Security (samme org_isolation-policy-mønster som migrasjon 040). ALTER TABLE tournament_class ENABLE ROW LEVEL SECURITY; ALTER TABLE tournament_class FORCE ROW LEVEL SECURITY; CREATE POLICY org_isolation ON tournament_class USING (organization_id = current_setting('app.current_org', true)::uuid) WITH CHECK (organization_id = current_setting('app.current_org', true)::uuid);