gitlab-org--gitlab-foss/db/post_migrate/20170803090603_calculate_co...

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