summaryrefslogtreecommitdiff
path: root/db/migrate/20161019213545_generate_project_feature_for_projects.rb
blob: 4554e14b0df612cc0b9e09efc642a66913fbb9be (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
class GenerateProjectFeatureForProjects < ActiveRecord::Migration
  DOWNTIME = true

  DOWNTIME_REASON = <<-HEREDOC
    Application was eager loading project_feature for all projects generating an extra query
    everytime a project was fetched. We removed that behavior to avoid the extra query, this migration
    makes sure all projects have a project_feature record associated.
  HEREDOC

  def up
    # Generate enabled values for each project feature 20, 20, 20, 20, 20
    # All features are enabled by default
    enabled_values = [ProjectFeature::ENABLED] * 5

    execute <<-EOF.strip_heredoc
      INSERT INTO project_features
      (project_id, merge_requests_access_level, builds_access_level,
      issues_access_level, snippets_access_level, wiki_access_level)
      (SELECT projects.id, #{enabled_values.join(',')} FROM projects LEFT OUTER JOIN project_features
      ON project_features.project_id = projects.id
      WHERE project_features.id IS NULL)
    EOF
  end

  def down
    "Not needed"
  end
end