-- Adiciona coluna para armazenar o código fixo de indicação por usuário
ALTER TABLE `users`
  ADD COLUMN `referral_code` VARCHAR(20) DEFAULT NULL AFTER `language`;

ALTER TABLE `users`
  ADD UNIQUE KEY `users_referral_code_unique` (`referral_code`);

-- Permite reutilizar o mesmo código em vários registros de indicação aceitos
ALTER TABLE `referrals`
  DROP INDEX `referral_code`;

ALTER TABLE `referrals`
  ADD INDEX `idx_referrals_code` (`referral_code`);

-- Preenche os códigos existentes a partir dos registros pendentes (caso existam)
UPDATE `users` u
JOIN `referrals` r ON r.referrer_id = u.id AND r.status = 'pending'
SET u.referral_code = r.referral_code
WHERE u.referral_code IS NULL;
