teecup/075_tournament_hole_stats_parity.sql

53 lines
2.8 KiB
MySQL
Raw Permalink Normal View History

-- =====================================================================
-- TeeCup — Full statistikkdybde i org-turneringers hull-scoring (ADR-071,
-- 2026-08-15). Steg 1 av "spillerens per-hull-historikk"-funksjonen.
--
-- `tournament_round_hole` har siden opprettelse (migrasjon 040) KUN hatt
-- `gross_strokes` -- ingen putts/utslag-/innspillretning/bunker-/
-- straffeslag-detalj slik `round_hole` (frittstående runder) allerede
-- har. Denne migrasjonen gir turneringssiden samme feltsett, SAMME navn
-- og SAMME CHECK-betingelser som `round_hole` (022_round_stats_and_bag.sql/
-- 062_round_hole_version.sql) -- en ren utvidelse, ingen eksisterende
-- format (Københavner/BBB/Flag/Eclectic) berøres, de leser fortsatt kun
-- `gross_strokes`.
--
-- `version` (optimistisk låsing, ADR-057-mønster) er NY for denne
-- tabellen -- `tournament_round_hole.update_hole` har til nå vært rent
-- siste-skriver-vinner. DEFAULT 1, samme begrunnelse som migrasjon 062:
-- en fersk rad skal kunne treffes med expected_version=1 uten at
-- klienten må vite at "ubrukt" betyr noe annet.
--
-- `tournament_participant.stat_level` (samme tre verdier, samme trygge
-- default 'strokes_only') styrer hvor mye UI/backend faktisk ber om --
-- lagt på `tournament_participant` (tournament-bredt), ikke
-- `tournament_round_participant` (per runde), fordi en deltaker normalt
-- spiller flere runder i samme turnering og ikke skal måtte velge
-- statistikknivå på nytt hver gang.
-- =====================================================================
\set ON_ERROR_STOP on
ALTER TABLE tournament_round_hole
ADD COLUMN putts smallint
CHECK (putts IS NULL OR putts BETWEEN 0 AND 10),
ADD COLUMN club_off_tee text,
ADD COLUMN tee_shot_result text
CHECK (tee_shot_result IS NULL OR tee_shot_result IN ('fairway', 'left', 'right')),
ADD COLUMN approach_result text
CHECK (approach_result IS NULL OR approach_result IN ('hit', 'long', 'short', 'left', 'right')),
ADD COLUMN chip_count smallint
CHECK (chip_count IS NULL OR chip_count >= 0),
ADD COLUMN bunker_shot_count smallint
CHECK (bunker_shot_count IS NULL OR bunker_shot_count >= 0),
ADD COLUMN penalty_strokes smallint
CHECK (penalty_strokes IS NULL OR penalty_strokes >= 0),
ADD COLUMN anyway_strokes smallint
CHECK (anyway_strokes IS NULL OR anyway_strokes >= 0),
ADD COLUMN first_putt_distance_bucket text
CHECK (first_putt_distance_bucket IS NULL OR first_putt_distance_bucket IN (
'<1m', '<2m', '<3m', '<5m', '<8m', '8m+'
)),
ADD COLUMN version integer NOT NULL DEFAULT 1;
ALTER TABLE tournament_participant ADD COLUMN stat_level text NOT NULL DEFAULT 'strokes_only'
CHECK (stat_level IN ('strokes_only', 'strokes_and_putts', 'full'));