42 lines
2.3 KiB
MySQL
42 lines
2.3 KiB
MySQL
|
|
-- 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);
|