diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2022-03-18 20:02:30 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2022-03-18 20:02:30 +0000 |
commit | 41fe97390ceddf945f3d967b8fdb3de4c66b7dea (patch) | |
tree | 9c8d89a8624828992f06d892cd2f43818ff5dcc8 /app/services/users | |
parent | 0804d2dc31052fb45a1efecedc8e06ce9bc32862 (diff) | |
download | gitlab-ce-41fe97390ceddf945f3d967b8fdb3de4c66b7dea.tar.gz |
Add latest changes from gitlab-org/gitlab@14-9-stable-eev14.9.0-rc42
Diffstat (limited to 'app/services/users')
-rw-r--r-- | app/services/users/migrate_to_ghost_user_service.rb | 21 | ||||
-rw-r--r-- | app/services/users/saved_replies/create_service.rb | 29 | ||||
-rw-r--r-- | app/services/users/saved_replies/update_service.rb | 26 |
3 files changed, 70 insertions, 6 deletions
diff --git a/app/services/users/migrate_to_ghost_user_service.rb b/app/services/users/migrate_to_ghost_user_service.rb index 575614e8743..604b83f621f 100644 --- a/app/services/users/migrate_to_ghost_user_service.rb +++ b/app/services/users/migrate_to_ghost_user_service.rb @@ -66,20 +66,20 @@ module Users # rubocop: disable CodeReuse/ActiveRecord def migrate_issues - user.issues.update_all(author_id: ghost_user.id) - Issue.where(last_edited_by_id: user.id).update_all(last_edited_by_id: ghost_user.id) + batched_migrate(Issue, :author_id) + batched_migrate(Issue, :last_edited_by_id) end # rubocop: enable CodeReuse/ActiveRecord # rubocop: disable CodeReuse/ActiveRecord def migrate_merge_requests - user.merge_requests.update_all(author_id: ghost_user.id) - MergeRequest.where(merge_user_id: user.id).update_all(merge_user_id: ghost_user.id) + batched_migrate(MergeRequest, :author_id) + batched_migrate(MergeRequest, :merge_user_id) end # rubocop: enable CodeReuse/ActiveRecord def migrate_notes - user.notes.update_all(author_id: ghost_user.id) + batched_migrate(Note, :author_id) end def migrate_abuse_reports @@ -96,8 +96,17 @@ module Users end def migrate_reviews - user.reviews.update_all(author_id: ghost_user.id) + batched_migrate(Review, :author_id) end + + # rubocop:disable CodeReuse/ActiveRecord + def batched_migrate(base_scope, column) + loop do + update_count = base_scope.where(column => user.id).limit(100).update_all(column => ghost_user.id) + break if update_count == 0 + end + end + # rubocop:enable CodeReuse/ActiveRecord end end diff --git a/app/services/users/saved_replies/create_service.rb b/app/services/users/saved_replies/create_service.rb new file mode 100644 index 00000000000..21378ec4435 --- /dev/null +++ b/app/services/users/saved_replies/create_service.rb @@ -0,0 +1,29 @@ +# frozen_string_literal: true + +module Users + module SavedReplies + class CreateService + def initialize(current_user:, name:, content:) + @current_user = current_user + @name = name + @content = content + end + + def execute + saved_reply = saved_replies.build(name: name, content: content) + + if saved_reply.save + ServiceResponse.success(payload: { saved_reply: saved_reply }) + else + ServiceResponse.error(message: saved_reply.errors.full_messages) + end + end + + private + + attr_reader :current_user, :name, :content + + delegate :saved_replies, to: :current_user + end + end +end diff --git a/app/services/users/saved_replies/update_service.rb b/app/services/users/saved_replies/update_service.rb new file mode 100644 index 00000000000..ab0a3eaf87d --- /dev/null +++ b/app/services/users/saved_replies/update_service.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +module Users + module SavedReplies + class UpdateService + def initialize(current_user:, saved_reply:, name:, content:) + @current_user = current_user + @saved_reply = saved_reply + @name = name + @content = content + end + + def execute + if saved_reply.update(name: name, content: content) + ServiceResponse.success(payload: { saved_reply: saved_reply.reset }) + else + ServiceResponse.error(message: saved_reply.errors.full_messages) + end + end + + private + + attr_reader :current_user, :saved_reply, :name, :content + end + end +end |