-- =====================================================================
--  TeeCup — personlig profil på app_user + tverr-org spiller-oppslag
--  (migrasjon 015)
-- =====================================================================
--  ADR-031: personlig landingsside for enhver registrert bruker. Ett
--  canonical profil-sett PER KONTO (ikke per org-scopet `player`-rad --
--  se ADR-031 for hvorfor de to bevisst holdes atskilt). Alt additivt/
--  nullable -- trygt mot eksisterende kontoer.
-- =====================================================================

\set ON_ERROR_STOP on

ALTER TABLE app_user ADD COLUMN first_name text;
ALTER TABLE app_user ADD COLUMN last_name text;
ALTER TABLE app_user ADD COLUMN birth_date date;
ALTER TABLE app_user ADD COLUMN gender text CHECK (gender IN ('m', 'f', 'x'));
ALTER TABLE app_user ADD COLUMN handicap_index numeric(4,1);
ALTER TABLE app_user ADD COLUMN home_club text;
ALTER TABLE app_user ADD COLUMN avatar_key text;

-- Samme "smale SECURITY DEFINER-bro"-mønster som public_tournament_org()
-- (007) / link_player_by_email() (008) / public_org_by_slug() (009) /
-- public_tournament_by_code() (011): `player` er RLS-beskyttet per org, så
-- et tverr-org-oppslag ("hvilke organisasjoner har jeg en spiller-rad i")
-- kan ikke gjøres med en vanlig org-scopet tilkobling. Eksponerer KUN
-- uuid-listen, ingenting annet fra player-raden.
CREATE FUNCTION player_organizations_for_user(p_user_id uuid)
RETURNS TABLE(organization_id uuid)
LANGUAGE sql
SECURITY DEFINER
SET search_path = public
STABLE
AS $$
    SELECT DISTINCT organization_id FROM player WHERE user_id = p_user_id;
$$;

GRANT EXECUTE ON FUNCTION player_organizations_for_user(uuid) TO teecup_app;
