29 lines
936 B
Ruby
29 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
|