class Schemaless::Index

Stores indexes

Constants

VALID_OPTS

Attributes

fields[RW]
name[RW]
opts[RW]

Public Class Methods

new(fields, name = nil, opts = {}) click to toggle source
# File lib/schemaless/index.rb, line 9
def initialize(fields, name = nil, opts = {})
  @fields = [fields].flatten
  @fields = @fields.first if @fields.size == 1
  @name = name || opts[:name]
  @opts = opts.select { |_k, v| v.present?  }
  @opts.merge!(name: @name) if @name
end

Public Instance Methods

==(other) click to toggle source
# File lib/schemaless/index.rb, line 30
def ==(other)
  name == other.name
end
add!(table) click to toggle source

Add Indexes

# File lib/schemaless/index.rb, line 37
def add!(table)
  return if Schemaless.sandbox
  ::ActiveRecord::Migration.add_index(table.name, fields, opts)
end
change!(table) click to toggle source

Change Indexes

# File lib/schemaless/index.rb, line 54
def change!(table)
  return if Schemaless.sandbox
  ::ActiveRecord::Migration.change_index(table.name, name, type, opts)
end
fields_text() click to toggle source
# File lib/schemaless/index.rb, line 22
def fields_text
  @fields.inspect
end
opts_text() click to toggle source
# File lib/schemaless/index.rb, line 17
def opts_text
  txt = opts.map { |k, v| "#{k}: #{v}" }.join(', ')
  txt.empty? ? '' : ", #{txt}"
end
remove!(table) click to toggle source

Delete Indexes

# File lib/schemaless/index.rb, line 45
def remove!(table)
  return if Schemaless.sandbox
  key = name ? { name: name } : { column: fields }
  ::ActiveRecord::Migration.remove_index(table.name, key)
end
to_s() click to toggle source
# File lib/schemaless/index.rb, line 26
def to_s
  name
end