Class: ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter::SchemaCreation

Inherits:
ActiveRecord::ConnectionAdapters::AbstractAdapter::SchemaCreation show all
Defined in:
lib/activerecord-mysql-unsigned/active_record/v4/connection_adapters/abstract_mysql_adapter.rb

Instance Method Summary collapse

Methods inherited from ActiveRecord::ConnectionAdapters::AbstractAdapter::SchemaCreation

#initialize

Constructor Details

This class inherits a constructor from ActiveRecord::ConnectionAdapters::AbstractAdapter::SchemaCreation

Instance Method Details

#add_column_position!(sql, options) ⇒ Object



46
47
48
49
50
51
52
# File 'lib/activerecord-mysql-unsigned/active_record/v4/connection_adapters/abstract_mysql_adapter.rb', line 46

def add_column_position!(sql, options)
  if options[:first]
    sql << " FIRST"
  elsif options[:after]
    sql << " AFTER #{quote_column_name(options[:after])}"
  end
end

#column_options(o) ⇒ Object



39
40
41
42
43
44
# File 'lib/activerecord-mysql-unsigned/active_record/v4/connection_adapters/abstract_mysql_adapter.rb', line 39

def column_options(o)
  column_options = super
  column_options[:first] = o.first
  column_options[:after] = o.after
  column_options
end

#type_to_sql(type, limit, precision, scale, unsigned = false) ⇒ Object



54
55
56
# File 'lib/activerecord-mysql-unsigned/active_record/v4/connection_adapters/abstract_mysql_adapter.rb', line 54

def type_to_sql(type, limit, precision, scale, unsigned = false)
  @conn.type_to_sql type.to_sym, limit, precision, scale, unsigned
end

#visit_AddColumn(o) ⇒ Object



11
12
13
14
15
16
17
18
# File 'lib/activerecord-mysql-unsigned/active_record/v4/connection_adapters/abstract_mysql_adapter.rb', line 11

def visit_AddColumn(o)
  sql_type = type_to_sql(o.type.to_sym, o.limit, o.precision, o.scale, o.unsigned)
  add_column_sql = "ADD #{quote_column_name(o.name)} #{sql_type}"
  add_column_options!(add_column_sql, column_options(o)) unless o.type.to_sym == :primary_key
  add_column_position!(add_column_sql, column_options(o))

  add_column_sql
end

#visit_ChangeColumnDefinition(o) ⇒ Object



20
21
22
23
24
25
26
27
28
29
# File 'lib/activerecord-mysql-unsigned/active_record/v4/connection_adapters/abstract_mysql_adapter.rb', line 20

def visit_ChangeColumnDefinition(o)
  column = o.column
  options = o.options
  sql_type = type_to_sql(o.type, options[:limit], options[:precision], options[:scale], options[:unsigned])
  change_column_sql = "CHANGE #{quote_column_name(column.name)} #{quote_column_name(options[:name])} #{sql_type}"
  add_column_options!(change_column_sql, options.merge(column: column)) unless o.type.to_sym == :primary_key
  add_column_position!(change_column_sql, options)

  change_column_sql
end

#visit_ColumnDefinition(o) ⇒ Object



31
32
33
34
35
36
37
# File 'lib/activerecord-mysql-unsigned/active_record/v4/connection_adapters/abstract_mysql_adapter.rb', line 31

def visit_ColumnDefinition(o)
  sql_type = type_to_sql(o.type.to_sym, o.limit, o.precision, o.scale, o.unsigned)
  column_sql = "#{quote_column_name(o.name)} #{sql_type}"
  add_column_options!(column_sql, column_options(o)) unless o.type.to_sym == :primary_key

  column_sql
end