Class: JiraConnectInstallations::DestroyService

Inherits:
Object
  • Object
show all
Defined in:
app/services/jira_connect_installations/destroy_service.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(installation, jira_connect_base_path, jira_connect_uninstalled_event_path) ⇒ DestroyService

Returns a new instance of DestroyService.



9
10
11
12
13
# File 'app/services/jira_connect_installations/destroy_service.rb', line 9

def initialize(installation, jira_connect_base_path, jira_connect_uninstalled_event_path)
  @installation = installation
  @jira_connect_base_path = jira_connect_base_path
  @jira_connect_uninstalled_event_path = jira_connect_uninstalled_event_path
end

Class Method Details

.execute(installation, jira_connect_base_path, jira_connect_uninstalled_event_path) ⇒ Object



5
6
7
# File 'app/services/jira_connect_installations/destroy_service.rb', line 5

def self.execute(installation, jira_connect_base_path, jira_connect_uninstalled_event_path)
  new(installation, jira_connect_base_path, jira_connect_uninstalled_event_path).execute
end

Instance Method Details

#deactivate_jira_cloud_app_integrations(subscriptions_namespace_ids) ⇒ Object



31
32
33
34
35
# File 'app/services/jira_connect_installations/destroy_service.rb', line 31

def deactivate_jira_cloud_app_integrations(subscriptions_namespace_ids)
  subscriptions_namespace_ids.each do |namespace_id|
    JiraConnect::JiraCloudAppDeactivationWorker.perform_async(namespace_id)
  end
end

#executeObject



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'app/services/jira_connect_installations/destroy_service.rb', line 15

def execute
  if @installation.instance_url.present?
    JiraConnect::ForwardEventWorker.perform_async(@installation.id, @jira_connect_base_path, @jira_connect_uninstalled_event_path)
    return true
  end

  # rubocop:disable Database/AvoidUsingPluckWithoutLimit, CodeReuse/ActiveRecord -- Limit of 100 max per page is defined in kaminari config
  subscriptions_namespace_ids = @installation.subscriptions.pluck(:namespace_id)
  # rubocop:enable Database/AvoidUsingPluckWithoutLimit, CodeReuse/ActiveRecord

  return false unless @installation.destroy

  deactivate_jira_cloud_app_integrations(subscriptions_namespace_ids)
  true
end