Starthull-bugen (og trolig GIR-avviket den forårsaket) — fikset Kølle-bag i profilen (28 faste kølletyper, maks 14) — bygget Anywayslag-statistikkfelt — bygget Valgfritt statistikknivå per deltaker (Kun slag / Slag og putter / All statistikk, default Kun slag) — bygget Putt-avstand som faste bøtter i stedet for fritekst — bygget «Hullet er spilt»-avkrysningen fjernet — gjort Bekreft, så kjører jeg migrasjonen og ruller ut.
48 lines
2.4 KiB
SQL
48 lines
2.4 KiB
SQL
-- 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+'
|
|
));
|