34 lines
962 B
Ruby
34 lines
962 B
Ruby
# frozen_string_literal: true
|
|
# rubocop:disable Style/Documentation
|
|
|
|
module Gitlab
|
|
module BackgroundMigration
|
|
class MigrateUsersBioToUserDetails
|
|
class User < ActiveRecord::Base
|
|
self.table_name = 'users'
|
|
end
|
|
|
|
class UserDetails < ActiveRecord::Base
|
|
self.table_name = 'user_details'
|
|
end
|
|
|
|
def perform(start_id, stop_id)
|
|
return if Feature.disabled?(:migrate_bio_to_user_details, default_enabled: true)
|
|
|
|
relation = User
|
|
.select("id AS user_id", "substring(COALESCE(bio, '') from 1 for 255) AS bio")
|
|
.where("(COALESCE(bio, '') IS DISTINCT FROM '')")
|
|
.where(id: (start_id..stop_id))
|
|
|
|
ActiveRecord::Base.connection.execute <<-EOF.strip_heredoc
|
|
INSERT INTO user_details
|
|
(user_id, bio)
|
|
#{relation.to_sql}
|
|
ON CONFLICT (user_id)
|
|
DO UPDATE SET
|
|
"bio" = EXCLUDED."bio";
|
|
EOF
|
|
end
|
|
end
|
|
end
|
|
end
|