class Mv::Core::Constraint::Builder::Index

Public Instance Methods

create() click to toggle source
# File lib/mv/core/constraint/builder/index.rb, line 8
def create
  super

  constraint.validations.group_by(&:table_name).each do |table_name, validations|
    remove_index(table_name)
    add_index(table_name, validations.collect(&:column_name))
  end
end
delete() click to toggle source
# File lib/mv/core/constraint/builder/index.rb, line 17
def delete
  super

  constraint.validations.group_by(&:table_name).each do |table_name, validations|
    remove_index(table_name)
  end
end
update(new_constraint_builder) click to toggle source
# File lib/mv/core/constraint/builder/index.rb, line 25
def update new_constraint_builder
  super

  delete
  new_constraint_builder.create
end

Private Instance Methods

add_index(table_name, columns) click to toggle source
# File lib/mv/core/constraint/builder/index.rb, line 43
def add_index(table_name, columns)
  db.add_index(table_name, columns, name: name, unique: true)
end
index_exists?(table_name) click to toggle source
# File lib/mv/core/constraint/builder/index.rb, line 34
def index_exists?(table_name)
  db.data_source_exists?(table_name) &&
  db.index_name_exists?(table_name, name, false)
end
remove_index(table_name) click to toggle source
# File lib/mv/core/constraint/builder/index.rb, line 39
def remove_index(table_name)
  db.remove_index(table_name, name: name) if index_exists?(table_name)
end