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.



51
52
53
54
# File 'lib/declare_schema/model/table_options_definition.rb', line 51

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.



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

def table_name
  @table_name
end

#table_optionsObject (readonly)

Returns the value of attribute table_options.



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

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



68
69
70
# File 'lib/declare_schema/model/table_options_definition.rb', line 68

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

#alter_table_statementObject



79
80
81
82
# File 'lib/declare_schema/model/table_options_definition.rb', line 79

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:



72
73
74
# File 'lib/declare_schema/model/table_options_definition.rb', line 72

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

#hashObject



64
65
66
# File 'lib/declare_schema/model/table_options_definition.rb', line 64

def hash
  to_key.hash
end

#settingsObject Also known as: to_s



60
61
62
# File 'lib/declare_schema/model/table_options_definition.rb', line 60

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

#to_keyObject



56
57
58
# File 'lib/declare_schema/model/table_options_definition.rb', line 56

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