Manuelt anvendt (organisator trykker "Anvend cut"), etter et valgt rundenummer. Kuttede spillere blokkeres fra scoring i senere runder og vises i egen seksjon på leaderboardet. Migrasjon 083 lagt til, men IKKE anvendt mot ekte teecup_db ennå -- venter på bekreftelse.
37 lines
1.9 KiB
SQL
37 lines
1.9 KiB
SQL
-- =====================================================================
|
|
-- TeeCup — migrasjon 083
|
|
-- Cut: topp N og delt plass, etter et valgt rundenummer, manuelt anvendt
|
|
-- =====================================================================
|
|
-- Kun for individuelle turneringer (stroke_gross/stroke_net/stableford
|
|
-- -- samme sett som Augusta-resultattavlen, se ADR-*/CHANGELOG #104/112).
|
|
-- Bruker bekreftet design 2026-08-17/18: "Topp N og delt plass" (den
|
|
-- N-te plassen og alle uavgjort med den slipper gjennom), "etter et
|
|
-- bestemt rundenummer" (organisator velger selv hvilken runde cutten
|
|
-- gjelder fra), "vises i egen 'Cut'-seksjon, blokkert fra videre
|
|
-- scoring" -- og eksplisitt et MANUELT "Anvend cut"-trykk, IKKE
|
|
-- automatisk ved fullspilt runde (for å unngå at cutten slår inn for
|
|
-- tidlig mens noen fortsatt spiller den runden).
|
|
--
|
|
-- cut_after_round/cut_size er KONFIGURASJON (satt i Oppsett, kan endres
|
|
-- fritt inntil cutten faktisk anvendes). cut_applied_at er null inntil
|
|
-- organisator trykker "Anvend cut" -- selve anvendelsen er et eksplisitt
|
|
-- API-kall (`app/routers/individual_tournaments.py`) som beregner
|
|
-- stillingen etter cut_after_round og setter tournament_participant.cut
|
|
-- = true for alle UTENFOR cut_size+uavgjort-grensen. Idempotent: kan
|
|
-- trykkes på nytt (f.eks. etter en rettelse) -- regner alt på nytt fra
|
|
-- bunnen av, ikke bare inkrementelt.
|
|
--
|
|
-- tournament_participant.cut er IKKE nullable (false = fortsatt med,
|
|
-- samme "ingen regresjon for eksisterende data"-prinsipp som resten av
|
|
-- prosjektets nullable/default-valg).
|
|
-- =====================================================================
|
|
|
|
\set ON_ERROR_STOP on
|
|
|
|
ALTER TABLE tournament
|
|
ADD COLUMN cut_after_round smallint,
|
|
ADD COLUMN cut_size smallint CHECK (cut_size IS NULL OR cut_size > 0),
|
|
ADD COLUMN cut_applied_at timestamptz;
|
|
|
|
ALTER TABLE tournament_participant
|
|
ADD COLUMN cut boolean NOT NULL DEFAULT false;
|