# sometimes it's nice to add an index if, and only if, it doesn't already
# exist.  here is an example of doing just that
#

class DocumentIndexesForSphinx < ActiveRecord::Migration
  def self.up
    add_index_unless_exists :documents, :attachment_file_name
    add_index_unless_exists :documents, :updated_at
    add_index_unless_exists :documents, :created_at
    add_index_unless_exists :documents, :owner_id
    add_index_unless_exists :documents, :creator_id
  end

  def self.add_index_unless_exists(table_name, column_name, options = {})
    return false if index_exists?(table_name, column_name)
    add_index(table_name, column_name, options)
  end

  def self.index_exists?(table_name, column_name)
    column_names = Array(column_name)
    indexes(table_name).map(&:name).include?(index_name(table_name, column_names))
  end

  def self.down
  end
end