28 lines
936 B
Ruby
28 lines
936 B
Ruby
# frozen_string_literal: true
|
|
|
|
module Gitlab
|
|
module BackgroundMigration
|
|
# Class to populate new rows of UserCanonicalEmail based on existing email addresses
|
|
class PopulateCanonicalEmails
|
|
def perform(start_id, stop_id)
|
|
ActiveRecord::Base.connection.execute <<~SQL
|
|
INSERT INTO
|
|
user_canonical_emails (
|
|
user_id,
|
|
canonical_email,
|
|
created_at,
|
|
updated_at
|
|
)
|
|
SELECT users.id AS user_id,
|
|
concat(translate(split_part(split_part(users.email, '@', 1), '+', 1), '.', ''), '@gmail.com') AS canonical_email,
|
|
NOW() AS created_at,
|
|
NOW() AS updated_at
|
|
FROM users
|
|
WHERE users.email ILIKE '%@gmail.com'
|
|
AND users.id BETWEEN #{start_id} AND #{stop_id}
|
|
ON CONFLICT DO NOTHING;
|
|
SQL
|
|
end
|
|
end
|
|
end
|
|
end
|