Class: DeclareSchema::Model::TableOptionsDefinition

Inherits:
Object
  • Object
show all
Includes:
Comparable
Defined in:
lib/declare_schema/model/table_options_definition.rb

Constant Summary collapse

TABLE_OPTIONS_TO_SQL_MAPPINGS =
{
  charset:   'CHARACTER SET',
  collation: 'COLLATE'
}.freeze

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(table_name, table_options = {}) ⇒ TableOptionsDefinition

Returns a new instance of TableOptionsDefinition.



49
50
51
52
# File 'lib/declare_schema/model/table_options_definition.rb', line 49

def initialize(table_name, table_options = {})
  @table_name    = table_name
  @table_options = table_options
end

Instance Attribute Details

#table_nameObject (readonly)

Returns the value of attribute table_name.



47
48
49
# File 'lib/declare_schema/model/table_options_definition.rb', line 47

def table_name
  @table_name
end

#table_optionsObject (readonly)

Returns the value of attribute table_options.



47
48
49
# File 'lib/declare_schema/model/table_options_definition.rb', line 47

def table_options
  @table_options
end

Class Method Details

.for_model(model, old_table_name = nil) ⇒ Object



14
15
16
17
18
19
20
21
22
23
# File 'lib/declare_schema/model/table_options_definition.rb', line 14

def for_model(model, old_table_name = nil)
  table_name    = old_table_name || model.table_name
  table_options = if model.connection.class.name.match?(/mysql/i)
                    mysql_table_options(model.connection, table_name)
                  else
                    {}
                  end

  new(table_name, table_options)
end

Instance Method Details

#<=>(rhs) ⇒ Object



66
67
68
# File 'lib/declare_schema/model/table_options_definition.rb', line 66

def <=>(rhs)
  to_key <=> rhs.to_key
end

#alter_table_statementObject



77
78
79
80
# File 'lib/declare_schema/model/table_options_definition.rb', line 77

def alter_table_statement
  statement = "ALTER TABLE #{ActiveRecord::Base.connection.quote_table_name(table_name)} #{to_s};"
  "execute #{statement.inspect}"
end

#equivalent?(rhs) ⇒ Boolean

Returns:



70
71
72
# File 'lib/declare_schema/model/table_options_definition.rb', line 70

def equivalent?(rhs)
  settings == rhs.settings
end

#hashObject



62
63
64
# File 'lib/declare_schema/model/table_options_definition.rb', line 62

def hash
  to_key.hash
end

#settingsObject Also known as: to_s



58
59
60
# File 'lib/declare_schema/model/table_options_definition.rb', line 58

def settings
  @settings ||= table_options.map { |name, value| "#{TABLE_OPTIONS_TO_SQL_MAPPINGS[name]} #{value}" if value }.compact.join(" ")
end

#to_keyObject



54
55
56
# File 'lib/declare_schema/model/table_options_definition.rb', line 54

def to_key
  @key ||= [table_name, table_options].map(&:to_s)
end