Class: Todos::Destroy::ConfidentialIssueService

Inherits:
BaseService
  • Object
show all
Defined in:
app/services/todos/destroy/confidential_issue_service.rb

Overview

Service class for deleting todos that belongs to confidential issues. It deletes todos for users that are not at least planners, issue author or assignee.

Accepts issue_id or project_id as argument. When issue_id is passed it deletes matching todos for one confidential issue. When project_id is passed it deletes matching todos for all confidential issues of the project.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(issue_id: nil, project_id: nil) ⇒ ConfidentialIssueService

Returns a new instance of ConfidentialIssueService.



14
15
16
17
18
19
20
21
# File 'app/services/todos/destroy/confidential_issue_service.rb', line 14

def initialize(issue_id: nil, project_id: nil)
  @issues =
    if issue_id
      Issue.id_in(issue_id)
    elsif project_id
      project_confidential_issues(project_id)
    end
end

Instance Attribute Details

#issuesObject (readonly)

Returns the value of attribute issues.



12
13
14
# File 'app/services/todos/destroy/confidential_issue_service.rb', line 12

def issues
  @issues
end

Instance Method Details

#executeObject



23
24
25
26
27
28
29
30
# File 'app/services/todos/destroy/confidential_issue_service.rb', line 23

def execute
  return unless todos_to_remove?

  ::Gitlab::Database.allow_cross_joins_across_databases(
    url: 'https://gitlab.com/gitlab-org/gitlab/-/issues/422045') do
    delete_todos
  end
end