38 lines
1.7 KiB
MySQL
38 lines
1.7 KiB
MySQL
|
|
-- =====================================================================
|
||
|
|
-- 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;
|