# frozen_string_literal: true

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

  # Set this constant to true if this migration requires downtime.
  DOWNTIME = false

  disable_ddl_transaction!

  def up
    add_concurrent_index :services, [:type, :instance], unique: true, where: 'instance = true', name: 'index_services_on_type_and_instance_partial'
    remove_concurrent_index_by_name :services, 'index_services_on_type_and_instance'

    add_concurrent_index :services, [:type, :template], unique: true, where: 'template = true', name: 'index_services_on_type_and_template_partial'
    remove_concurrent_index_by_name :services, 'index_services_on_type_and_template'
  end

  def down
    add_concurrent_index :services, [:type, :instance], unique: true, where: 'instance IS TRUE', name: 'index_services_on_type_and_instance'
    remove_concurrent_index_by_name :services, 'index_services_on_type_and_instance_partial'

    add_concurrent_index :services, [:type, :template], unique: true, where: 'template IS TRUE', name: 'index_services_on_type_and_template'
    remove_concurrent_index_by_name :services, 'index_services_on_type_and_template_partial'
  end
end