ALTER TABLE users ADD COLUMN email_verified BOOLEAN NOT NULL DEFAULT TRUE; CREATE TABLE account_email_tokens ( id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, user_id BIGINT NOT NULL REFERENCES users(id) ON DELETE CASCADE, token_hash CHAR(64) NOT NULL UNIQUE, purpose VARCHAR(32) NOT NULL, expires_at TIMESTAMP NOT NULL, consumed_at TIMESTAMP, created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT account_email_tokens_purpose_check CHECK (purpose IN ('EMAIL_VERIFICATION', 'PASSWORD_RESET')) ); CREATE INDEX idx_account_email_tokens_lookup ON account_email_tokens (token_hash, purpose);