summaryrefslogtreecommitdiff
path: root/db/post_migrate/20200210092405_save_instance_administrators_group_id.rb
blob: e539a187672a299a5e0e2c58f456803a071338a2 (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
31
32
33
34
35
36
37
38
39
40
41
42
# frozen_string_literal: true

class SaveInstanceAdministratorsGroupId < ActiveRecord::Migration[6.0]
  DOWNTIME = false

  def up
    execute(
      <<-SQL
      UPDATE
        application_settings
      SET
        instance_administrators_group_id = (
          SELECT
            namespace_id
          FROM
            projects
          WHERE
            id = application_settings.instance_administration_project_id
        )
      WHERE
        instance_administrators_group_id IS NULL
        AND
        instance_administration_project_id IS NOT NULL
        AND
        ID in (
          SELECT
            max(id)
          FROM
            application_settings
        )
      SQL
    )
  end

  def down
    # no-op

    # The change performed by `up` cannot be reversed because once the migration runs,
    # we do not know what value application_settings.instance_administrators_group_id
    # had before the migration was run.
  end
end