-- Copyright 2019 The Chromium Authors. All Rights Reserved.
--
-- Use of this source code is governed by a BSD-style
-- license that can be found in the LICENSE file or at
-- https://developers.google.com/open-source/licenses/bsd

-- There have been cases of imported data that used the wrong email
-- address for a user.  This script can change all the user_ids in our
-- database from the ID for old_email to the ID for new_email.

DROP PROCEDURE IF EXISTS RewriteUserID;

delimiter //

CREATE PROCEDURE RewriteUserID(
    IN in_old_email VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci,
    IN in_new_email VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci)
proc_label:BEGIN
  DECLARE old_id INT UNSIGNED;
  DECLARE new_id INT UNSIGNED;

  IF in_old_email is NULL OR in_old_email = '' THEN
    SELECT CONCAT('in_old_email cannot be null or empty') as ErrorMsg;
    LEAVE proc_label;
  END IF;

  IF in_new_email is NULL OR in_new_email = '' THEN
    SELECT CONCAT('in_new_email cannot be null or empty') as ErrorMsg;
    LEAVE proc_label;
  END IF;

  SET old_id = (SELECT user_id FROM User WHERE email = in_old_email);
  SET new_id = (SELECT user_id FROM User WHERE email = in_new_email);

  IF old_id is NULL THEN
    SELECT CONCAT('User ', in_old_email, ' not found') as ErrorMsg;
    LEAVE proc_label;
  END IF;

  IF new_id is NULL THEN
    SELECT CONCAT('User ', in_new_email, ' not found') as ErrorMsg;
    LEAVE proc_label;
  END IF;

  SELECT CONCAT('Rewriting ', old_id, ' to ', new_id) AS Progress;

  UPDATE Component2Admin SET admin_id = new_id
  WHERE admin_id = old_id LIMIT 1000;

  UPDATE Component2Cc SET cc_id = new_id
  WHERE cc_id = old_id LIMIT 1000;

  UPDATE FieldDef2Admin SET admin_id = new_id
  WHERE admin_id = old_id LIMIT 1000;

  UPDATE Issue SET reporter_id = new_id
  WHERE reporter_id = old_id LIMIT 1000;

  UPDATE Issue SET owner_id = new_id
  WHERE owner_id = old_id LIMIT 1000;

  UPDATE IGNORE Issue2FieldValue SET user_id = new_id
  WHERE user_id = old_id LIMIT 1000;

  UPDATE IGNORE Issue2Cc SET cc_id = new_id
  WHERE cc_id = old_id LIMIT 1000;

  UPDATE IGNORE IssueStar SET user_id = new_id
  WHERE user_id = old_id LIMIT 1000;

  UPDATE Comment SET commenter_id = new_id
  WHERE commenter_id = old_id LIMIT 10000;

  UPDATE IssueUpdate SET added_user_id = new_id
  WHERE added_user_id = old_id LIMIT 10000;

  UPDATE IssueUpdate SET removed_user_id = new_id
  WHERE removed_user_id = old_id LIMIT 10000;

  UPDATE Template SET owner_id = new_id
  WHERE owner_id = old_id LIMIT 1000;

  UPDATE Template2Admin SET admin_id = new_id
  WHERE admin_id = old_id LIMIT 1000;

  -- Ignore filter rules, saved queries, hotlists, deleted_by, approvers.

  UPDATE IssueSnapshot SET reporter_id = new_id
  WHERE reporter_id = old_id LIMIT 10000;

  UPDATE IssueSnapshot SET owner_id = new_id
  WHERE owner_id = old_id LIMIT 10000;

  UPDATE IGNORE IssueSnapshot2Cc SET cc_id = new_id
  WHERE cc_id = old_id LIMIT 10000;

END;

//

delimiter ;
