33 lines
872 B
Ruby
33 lines
872 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)
|
||
|
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
|