Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app/services/todos/destroy/project_private_service.rb')
-rw-r--r--app/services/todos/destroy/project_private_service.rb23
1 files changed, 14 insertions, 9 deletions
diff --git a/app/services/todos/destroy/project_private_service.rb b/app/services/todos/destroy/project_private_service.rb
index e00d10c3780..a1ca0d8543c 100644
--- a/app/services/todos/destroy/project_private_service.rb
+++ b/app/services/todos/destroy/project_private_service.rb
@@ -7,27 +7,32 @@ module Todos
attr_reader :project
- # rubocop: disable CodeReuse/ActiveRecord
def initialize(project_id)
- @project = Project.find_by(id: project_id)
+ @project = Project.find_by_id(project_id)
+ end
+
+ def execute
+ return unless todos_to_remove?
+
+ delete_todos
end
- # rubocop: enable CodeReuse/ActiveRecord
private
- override :todos
- # rubocop: disable CodeReuse/ActiveRecord
+ def delete_todos
+ authorized_users = ProjectAuthorization.select(:user_id).for_project(project_ids)
+
+ todos.not_in_users(authorized_users).delete_all
+ end
+
def todos
- Todo.where(project_id: project.id)
+ Todo.for_project(project.id)
end
- # rubocop: enable CodeReuse/ActiveRecord
- override :project_ids
def project_ids
project.id
end
- override :todos_to_remove?
def todos_to_remove?
project&.private?
end