-- Migração opcional para permitir login por nome de usuário no SISPROM/REURBTEC.
-- Execute no schema usado pelo backend PHP, por exemplo gestao_sisprom.

ALTER TABLE users ADD COLUMN IF NOT EXISTS username varchar(80);
ALTER TABLE profiles ADD COLUMN IF NOT EXISTS username varchar(80);

CREATE UNIQUE INDEX IF NOT EXISTS idx_users_username_lower
ON users (lower(username))
WHERE username IS NOT NULL AND username <> '';

CREATE INDEX IF NOT EXISTS idx_profiles_username_lower
ON profiles (lower(username))
WHERE username IS NOT NULL AND username <> '';

-- Preenche usuários existentes com o prefixo do e-mail, caso ainda não tenham username.
UPDATE users
SET username = lower(regexp_replace(split_part(email, '@', 1), '[^a-zA-Z0-9._-]', '', 'g'))
WHERE username IS NULL OR username = '';

UPDATE profiles p
SET username = u.username
FROM users u
WHERE u.id = p.user_id
  AND (p.username IS NULL OR p.username = '');

-- Exemplo específico solicitado:
-- UPDATE users SET username = 'henrique.santos' WHERE lower(email) = lower('henriquesisprom@gmail.com');
-- UPDATE profiles SET username = 'henrique.santos' WHERE lower(email) = lower('henriquesisprom@gmail.com');
