ALTER TABLE users DROP COLUMN IF EXISTS email_verified; CREATE TABLE IF NOT EXISTS account_tokens ( id SERIAL PRIMARY KEY, user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, purpose VARCHAR(30) NOT NULL CHECK (purpose = 'password_reset'), token_hash TEXT NOT NULL UNIQUE, expires_at TIMESTAMP NOT NULL, used_at TIMESTAMP, created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ); DELETE FROM account_tokens WHERE purpose = 'verify_email'; ALTER TABLE account_tokens DROP CONSTRAINT IF EXISTS account_tokens_purpose_check; ALTER TABLE account_tokens ADD CONSTRAINT account_tokens_purpose_check CHECK (purpose = 'password_reset'); CREATE INDEX IF NOT EXISTS idx_account_tokens_lookup ON account_tokens (token_hash, purpose, expires_at); ALTER TABLE concert_attendance DROP CONSTRAINT IF EXISTS concert_attendance_status_check; ALTER TABLE concert_attendance ADD CONSTRAINT concert_attendance_status_check CHECK (status IN ('attending', 'maybe', 'ticket_search', 'ticket_offer'));