summaryrefslogtreecommitdiff
path: root/db/migrate/20210127152613_add_iterations_cadence_date_range_constraint.rb
blob: 95ecd167076860d87ea818c1158076aa1174c709 (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
# frozen_string_literal: true

class AddIterationsCadenceDateRangeConstraint < ActiveRecord::Migration[6.0]
  include Gitlab::Database::MigrationHelpers

  DOWNTIME = false

  def up
    with_lock_retries do
      execute <<~SQL
        ALTER TABLE sprints
          ADD CONSTRAINT iteration_start_and_due_date_iterations_cadence_id_constraint
          EXCLUDE USING gist
          ( iterations_cadence_id WITH =,
            daterange(start_date, due_date, '[]') WITH &&
          )
          WHERE (group_id IS NOT NULL)
      SQL
    end
  end

  def down
    with_lock_retries do
      execute <<~SQL
        ALTER TABLE sprints
          DROP CONSTRAINT IF EXISTS iteration_start_and_due_date_iterations_cadence_id_constraint
      SQL
    end
  end
end