summaryrefslogtreecommitdiff
path: root/db/post_migrate/20170803090603_calculate_conv_dev_index_percentages.rb
blob: a148586ca8921d9cdad7a66aaa010c1fa4b205c2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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