module ActiveRecord::Migration::Compatibility::V7_0::LegacyIndexName

def expression_column_name?(column_name)

def expression_column_name?(column_name)
  column_name.is_a?(String) && /\W/.match?(column_name)
end

def index_name_options(column_names)

def index_name_options(column_names)
  if expression_column_name?(column_names)
    column_names = column_names.scan(/\w+/).join("_")
  end
  { column: column_names }
end

def legacy_index_name(table_name, options)

def legacy_index_name(table_name, options)
  if Hash === options
    if options[:column]
      "index_#{table_name}_on_#{Array(options[:column]) * '_and_'}"
    elsif options[:name]
      options[:name]
    else
      raise ArgumentError, "You must specify the index name"
    end
  else
    legacy_index_name(table_name, index_name_options(options))
  end
end