teecup/022_round_stats_and_bag.sql

49 lines
2.4 KiB
MySQL
Raw Normal View History

-- Frittstående rundeføring (ADR-033), oppfølging 2026-07-24: kølle-bag,
-- valgfritt statistikknivå per deltaker, anywayslag, og bøtte-inndelt
-- lengde på første putt (erstatter det opprinnelige frie tallfeltet).
-- ---------------------------------------------------------------------
-- Kølle-bag (personlig profil, ADR-031-mønster -- ETT sett per konto)
-- ---------------------------------------------------------------------
-- Fast, ikke-utvidbar liste (28 kølletyper) -- app-laget (Pydantic Literal)
-- er den primære validatoren, denne CHECK-en er en bakstopper i samme
-- ånd som gender-CHECK-en andre steder i skjemaet.
ALTER TABLE app_user ADD COLUMN bag_clubs text[];
ALTER TABLE app_user ADD CONSTRAINT app_user_bag_clubs_max_14
CHECK (bag_clubs IS NULL OR array_length(bag_clubs, 1) <= 14);
ALTER TABLE app_user ADD CONSTRAINT app_user_bag_clubs_known_values
CHECK (bag_clubs IS NULL OR bag_clubs <@ ARRAY[
'Driver', 'Mini-driver', 'Driving iron', '3-wood', '4-wood', '5-wood',
'7-wood', '9-wood', '2-hybrid', '3-hybrid', '4-hybrid', '5-hybrid',
'1-iron', '2-iron', '3-iron', '4-iron', '5-iron', '6-iron', '7-iron',
'8-iron', '9-iron', 'Pitching wedge', 'Gap wedge', 'Sand wedge',
'Lob wedge', 'Ultra-lob wedge', 'Chipper', 'Putter'
]::text[]);
-- ---------------------------------------------------------------------
-- Valgfritt statistikknivå per deltaker (default: kun slag -- alt annet
-- er strengt tatt ikke nødvendig for å beregne resultat/HCP)
-- ---------------------------------------------------------------------
ALTER TABLE round_participant ADD COLUMN stat_level text NOT NULL DEFAULT 'strokes_only'
CHECK (stat_level IN ('strokes_only', 'strokes_and_putts', 'full'));
-- ---------------------------------------------------------------------
-- round_hole: anywayslag (nytt) + bøtte-inndelt førsteputt-lengde
-- (erstatter first_putt_distance_m -- ingen produksjonsdata å bevare,
-- kun 0 rader hadde verdi satt da dette ble besluttet)
-- ---------------------------------------------------------------------
ALTER TABLE round_hole ADD COLUMN anyway_strokes smallint
CHECK (anyway_strokes IS NULL OR anyway_strokes >= 0);
ALTER TABLE round_hole DROP COLUMN first_putt_distance_m;
ALTER TABLE round_hole 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+'
));