class BazaMigrations::Commands::AddIndex

Public Class Methods

new(table_name, columns, args) click to toggle source
# File lib/baza_migrations/commands/add_index.rb, line 2
def initialize(table_name, columns, args)
  @table_name = table_name
  @columns = columns
  @args = args
end

Public Instance Methods

changed_rollback_sql() click to toggle source
# File lib/baza_migrations/commands/add_index.rb, line 25
def changed_rollback_sql
  ["DROP INDEX `#{@db.escape_column(index_name)}`"]
end
sql() click to toggle source
# File lib/baza_migrations/commands/add_index.rb, line 8
def sql
  sql = "CREATE"
  sql << " UNIQUE" if @args[:unique]
  sql << " INDEX `#{@db.escape_column(index_name)}` ON `#{@db.escape_table(@table_name)}` ("

  first = true
  columns_as_array.each do |column|
    sql << ", " unless first
    first = false if first
    sql << "`#{column}`"
  end

  sql << ")"

  [sql]
end

Private Instance Methods

columns_as_array() click to toggle source
# File lib/baza_migrations/commands/add_index.rb, line 31
def columns_as_array
  return @columns if @columns.is_a?(Array)
  [@columns]
end
index_name() click to toggle source
# File lib/baza_migrations/commands/add_index.rb, line 36
def index_name
  name = "index_#{@table_name}_on_"

  first = true
  columns_as_array.each do |column|
    name << "_and_" unless first
    first = false if first
    name << column.to_s
  end

  name
end