2019-01-06 07:59:10 -05:00
# frozen_string_literal: true
module Projects
module Operations
class UpdateService < BaseService
def execute
Projects :: UpdateService
. new ( project , current_user , project_update_params )
. execute
end
private
def project_update_params
2019-10-03 17:07:29 -04:00
error_tracking_params
. merge ( metrics_setting_params )
. merge ( grafana_integration_params )
2019-04-26 13:23:26 -04:00
end
def metrics_setting_params
attribs = params [ :metrics_setting_attributes ]
return { } unless attribs
destroy = attribs [ :external_dashboard_url ] . blank?
{ metrics_setting_attributes : attribs . merge ( _destroy : destroy ) }
2019-03-01 09:51:54 -05:00
end
def error_tracking_params
settings = params [ :error_tracking_setting_attributes ]
return { } if settings . blank?
2019-12-18 13:08:04 -05:00
api_url = :: ErrorTracking :: ProjectErrorTrackingSetting . build_api_url_from (
2019-03-01 09:51:54 -05:00
api_host : settings [ :api_host ] ,
project_slug : settings . dig ( :project , :slug ) ,
organization_slug : settings . dig ( :project , :organization_slug )
)
2019-10-07 18:07:18 -04:00
params = {
2019-03-01 09:51:54 -05:00
error_tracking_setting_attributes : {
api_url : api_url ,
enabled : settings [ :enabled ] ,
project_name : settings . dig ( :project , :name ) ,
organization_name : settings . dig ( :project , :organization_name )
}
}
2019-10-07 18:07:18 -04:00
params [ :error_tracking_setting_attributes ] [ :token ] = settings [ :token ] unless / \ A \ *+ \ z / . match? ( settings [ :token ] ) # Don't update token if we receive masked value
params
2019-01-06 07:59:10 -05:00
end
2019-10-03 17:07:29 -04:00
def grafana_integration_params
return { } unless attrs = params [ :grafana_integration_attributes ]
destroy = attrs [ :grafana_url ] . blank? && attrs [ :token ] . blank?
{ grafana_integration_attributes : attrs . merge ( _destroy : destroy ) }
end
2019-01-06 07:59:10 -05:00
end
end
end
2019-09-13 09:26:31 -04:00
Projects :: Operations :: UpdateService . prepend_if_ee ( '::EE::Projects::Operations::UpdateService' )