class MySQLExpectations::KeyField

An index field has a field name, length, and order (aka order)

Constants

ORDER_ASC
ORDER_DESC
VALID_ORDERINGS

Attributes

length[R]
name[R]
order[R]

Public Class Methods

new(name, order = nil, length = nil) click to toggle source
# File lib/mysql_expectations/key_field.rb, line 16
def initialize(name, order = nil, length = nil)
  @name = name
  @order = validate_order(order)
  @length = validate_length(length)
end

Public Instance Methods

==(other) click to toggle source
# File lib/mysql_expectations/key_field.rb, line 22
def ==(other)
  other.name == @name && other.length == @length && other.order == @order
end
to_s() click to toggle source
# File lib/mysql_expectations/key_field.rb, line 26
def to_s
  "{ '#{name}', #{order_to_s}, #{length_to_s} }"
end

Private Instance Methods

length_to_s() click to toggle source
# File lib/mysql_expectations/key_field.rb, line 38
def length_to_s
  length.to_s unless length.nil?
  'nil'
end
order_to_s() click to toggle source
# File lib/mysql_expectations/key_field.rb, line 32
def order_to_s
  return 'ASC' if order == ORDER_ASC
  return 'DESC' if order == ORDER_DESC
  'nil'
end
validate_length(length) click to toggle source
# File lib/mysql_expectations/key_field.rb, line 43
def validate_length(length)
  return nil if length.nil?
  begin
    length = Integer(length)
  rescue ArgumentError
    raise ArgumentError, 'length must be an integer or convertable to an integer'
  end
  length
end
validate_order(order) click to toggle source
# File lib/mysql_expectations/key_field.rb, line 53
def validate_order(order)
  return nil if order.nil?
  return order if VALID_ORDERINGS.include? order
  fail ArgumentError, 'Order must be either KeyField::ORDER_ASC or KeyField::ORDER_DESC'
end