54 lines
1.2 KiB
Ruby
54 lines
1.2 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module AlertManagement
|
|
class HttpIntegrationsFinder
|
|
def initialize(project, params)
|
|
@project = project
|
|
@params = params
|
|
end
|
|
|
|
def execute
|
|
@collection = project.alert_management_http_integrations
|
|
|
|
filter_by_availability
|
|
filter_by_endpoint_identifier
|
|
filter_by_active
|
|
|
|
collection
|
|
end
|
|
|
|
private
|
|
|
|
attr_reader :project, :params, :collection
|
|
|
|
def filter_by_availability
|
|
return if multiple_alert_http_integrations?
|
|
|
|
first_id = project.alert_management_http_integrations
|
|
.ordered_by_id
|
|
.select(:id)
|
|
.limit(1)
|
|
|
|
@collection = collection.id_in(first_id)
|
|
end
|
|
|
|
def filter_by_endpoint_identifier
|
|
return unless params[:endpoint_identifier]
|
|
|
|
@collection = collection.for_endpoint_identifier(params[:endpoint_identifier])
|
|
end
|
|
|
|
def filter_by_active
|
|
return unless params[:active]
|
|
|
|
@collection = collection.active
|
|
end
|
|
|
|
# Overridden in EE
|
|
def multiple_alert_http_integrations?
|
|
false
|
|
end
|
|
end
|
|
end
|
|
|
|
::AlertManagement::HttpIntegrationsFinder.prepend_mod_with('AlertManagement::HttpIntegrationsFinder')
|