31 lines
1.0 KiB
Ruby
31 lines
1.0 KiB
Ruby
class CalculateConvDevIndexPercentages < ActiveRecord::Migration[4.2]
|
|
include Gitlab::Database::MigrationHelpers
|
|
DOWNTIME = false
|
|
|
|
class ConversationalDevelopmentIndexMetric < ActiveRecord::Base
|
|
self.table_name = 'conversational_development_index_metrics'
|
|
|
|
METRICS = %w[boards ci_pipelines deployments environments issues merge_requests milestones notes
|
|
projects_prometheus_active service_desk_issues]
|
|
end
|
|
|
|
def up
|
|
ConversationalDevelopmentIndexMetric.find_each do |conv_dev_index|
|
|
update = []
|
|
|
|
ConversationalDevelopmentIndexMetric::METRICS.each do |metric|
|
|
instance_score = conv_dev_index["instance_#{metric}"].to_f
|
|
leader_score = conv_dev_index["leader_#{metric}"].to_f
|
|
|
|
percentage = leader_score.zero? ? 0.0 : (instance_score / leader_score) * 100
|
|
update << "percentage_#{metric} = '#{percentage}'"
|
|
end
|
|
|
|
execute("UPDATE conversational_development_index_metrics SET #{update.join(',')} WHERE id = #{conv_dev_index.id}")
|
|
end
|
|
end
|
|
|
|
def down
|
|
end
|
|
end
|