-- +goose Up -- Stage 11 account linking & merge: retire a secondary account into a primary one. -- merged_into/merged_at turn the secondary into an audit tombstone (its identities -- are repointed and its non-shared rows transferred to the primary, but the row is -- kept so the no-cascade game_players/chat/complaints foreign keys of any shared -- finished game stay valid). merged_into self-references accounts and is SET NULL on -- delete so a future guest reaper (PLAN.md TODO-3) can still remove a primary. -- paid_account is a forward-looking lifetime one-time-payment marker (no purchase -- flow yet); the merge ORs it so a paid status is never lost. Adds columns, so the -- generated jet code is regenerated (cmd/jetgen). SET search_path = backend, pg_catalog; ALTER TABLE accounts ADD COLUMN paid_account boolean NOT NULL DEFAULT false, ADD COLUMN merged_into uuid REFERENCES accounts (account_id) ON DELETE SET NULL, ADD COLUMN merged_at timestamptz; -- +goose Down SET search_path = backend, pg_catalog; ALTER TABLE accounts DROP COLUMN merged_at, DROP COLUMN merged_into, DROP COLUMN paid_account;