summaryrefslogtreecommitdiff
path: root/db/migrate/20201104204739_create_bulk_import_trackers.rb
blob: 906bd06248dde833d7434246461dec2707c56030 (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 CreateBulkImportTrackers < ActiveRecord::Migration[6.0]
  include Gitlab::Database::MigrationHelpers

  DOWNTIME = false

  disable_ddl_transaction!

  def up
    with_lock_retries do
      unless table_exists?(:bulk_import_trackers)
        create_table :bulk_import_trackers do |t|
          t.references :bulk_import_entity,
            null: false,
            index: false,
            foreign_key: { on_delete: :cascade }

          t.text :relation, null: false
          t.text :next_page
          t.boolean :has_next_page, default: false, null: false

          t.index %w(bulk_import_entity_id relation),
            unique: true,
            name: :bulk_import_trackers_uniq_relation_by_entity
        end
      end
    end

    add_check_constraint :bulk_import_trackers,
      '(has_next_page IS FALSE or next_page IS NOT NULL)',
      'check_next_page_requirement'
    add_text_limit :bulk_import_trackers, :relation, 255
    add_text_limit :bulk_import_trackers, :next_page, 255
  end

  def down
    with_lock_retries do
      drop_table :bulk_import_trackers
    end
  end
end