teecup/074_player_extended_fields.sql
Erol Haagenrud a8a2c602ce Utvidet spillerskjema i "Deltakere" -- bla i eksisterende + nye felt (ADR-070)
Migrasjon 074 legger til first_name/last_name/paid/comment på player
(resten av de 11 ønskede feltene fantes allerede, bare ikke eksponert i
denne UI-flyten). AddParticipantControl fikk et "available"-fallback
slik at eksisterende org-spillere vises direkte ved tomt søk (tidligere
kun mulig å opprette ny), pluss et progressivt avslørt skjema for de nye
feltene. Se ADR-070 og CHANGELOG #86 for full detalj og verifisering.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-14 15:08:45 +02:00

38 lines
1.8 KiB
SQL

-- =====================================================================
-- TeeCup — Utvidede spillerfelt i org-spillerpoolen (2026-08-14).
-- Bruker: midlertidige/nyopprettede spillere i "Deltakere"-flyten
-- (org-individuelle turneringer, individual-tournament-detail.tsx)
-- manglet felt en reell klubbadministrator trenger ved registrering.
--
-- Splitter navn i for-/etternavn -- SAMME mønster som migrasjon 052
-- (round_participant.guest_first_name/guest_last_name): display_name
-- beholdes UENDRET som det faktisk VISTE fulle navnet (unngår å røre
-- alle eksisterende steder som leser player.display_name direkte,
-- bl.a. leaderboards/matcher/rostre) -- first_name/last_name er en NY,
-- valgfri kilde til sannhet ved REDIGERING i det utvidede skjemaet,
-- ikke en erstatning. App-laget (ikke en DB-trigger) holder dem i sync
-- ved oppretting, samme "kalleren regner ut display_name"-ansvar som
-- round_participant sin ekvivalent.
--
-- `paid`/`comment`: registreringsadministrasjon (betalt-avkrysning,
-- fritekstnotat) -- fantes ikke i noen form før.
-- =====================================================================
\set ON_ERROR_STOP on
ALTER TABLE player ADD COLUMN first_name text;
ALTER TABLE player ADD COLUMN last_name text;
ALTER TABLE player ADD COLUMN paid boolean NOT NULL DEFAULT false;
ALTER TABLE player ADD COLUMN comment text;
-- Backfill for EKSISTERENDE spillere -- samme "første ord = fornavn,
-- resten = etternavn"-heuristikk som migrasjon 052 sin backfill.
UPDATE player
SET first_name = CASE
WHEN position(' ' IN display_name) > 0 THEN split_part(display_name, ' ', 1)
ELSE display_name
END,
last_name = CASE
WHEN position(' ' IN display_name) > 0
THEN NULLIF(trim(substring(display_name FROM position(' ' IN display_name) + 1)), '')
ELSE NULL
END;