teecup/074_player_extended_fields.sql

39 lines
1.8 KiB
MySQL
Raw Normal View History

-- =====================================================================
-- 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;