-- =====================================================================
--  TeeCup — mobil (m/landsnummer) + verifisert e-postbytte på personlig
--  profil  (migrasjon 016)
-- =====================================================================
--  Oppfølging av ADR-031 samme dag: brukeren påpekte at identifikatoren
--  (e-post) og mobil manglet i profilen. Mobil er et rent, ekstra felt
--  (samme mønster som player.mobile, men splittet i landsnummer+nummer
--  slik brukeren ba om). E-post er derimot INNLOGGINGS-identifikatoren
--  (magic-link-mål) -- kan ikke endres med en enkel PATCH uten å risikere
--  kontokapring via en skrivefeil eller en kapret sesjon. Samme
--  token-hash-og-utløp-mønster som magic_link_token (004), gjenbrukt for
--  et NYTT formål: bekreft eierskap av den NYE adressen FØR den faktisk
--  tas i bruk.
-- =====================================================================

\set ON_ERROR_STOP on

ALTER TABLE app_user ADD COLUMN mobile_country_code text;
ALTER TABLE app_user ADD COLUMN mobile_number text;

CREATE TABLE email_change_token (
    id          uuid PRIMARY KEY DEFAULT gen_random_uuid(),
    user_id     uuid NOT NULL REFERENCES app_user(id) ON DELETE CASCADE,
    new_email   citext NOT NULL,
    token_hash  text NOT NULL UNIQUE,
    expires_at  timestamptz NOT NULL,
    consumed_at timestamptz,
    created_at  timestamptz NOT NULL DEFAULT now()
);

CREATE INDEX ON email_change_token (user_id);

GRANT SELECT, INSERT, UPDATE, DELETE ON email_change_token TO teecup_app;
