class ActiveRecord::ConnectionAdapters::AbstractAdapter::SchemaCreation

Public Class Methods

new(conn) click to toggle source
# File lib/active_record/connection_adapters/abstract_adapter.rb, line 109
def initialize(conn)
  @conn  = conn
  @cache = {}
end

Public Instance Methods

accept(o) click to toggle source
# File lib/active_record/connection_adapters/abstract_adapter.rb, line 114
def accept(o)
  m = @cache[o.class] ||= "visit_#{o.class.name.split('::').last}"
  send m, o
end

Private Instance Methods

add_column_options!(column_sql, column_options) click to toggle source
# File lib/active_record/connection_adapters/abstract_adapter.rb, line 167
def add_column_options!(column_sql, column_options)
  @conn.add_column_options! column_sql, column_options
  column_sql
end
column_options(o) click to toggle source
# File lib/active_record/connection_adapters/abstract_adapter.rb, line 147
def column_options(o)
  column_options = {}
  column_options[:null] = o.null unless o.null.nil?
  column_options[:default] = o.default unless o.default.nil?
  column_options[:column] = o
  column_options
end
quote_column_name(name) click to toggle source
# File lib/active_record/connection_adapters/abstract_adapter.rb, line 155
def quote_column_name(name)
  @conn.quote_column_name name
end
quote_table_name(name) click to toggle source
# File lib/active_record/connection_adapters/abstract_adapter.rb, line 159
def quote_table_name(name)
  @conn.quote_table_name name
end
type_to_sql(type, limit, precision, scale) click to toggle source
# File lib/active_record/connection_adapters/abstract_adapter.rb, line 163
def type_to_sql(type, limit, precision, scale)
  @conn.type_to_sql type.to_sym, limit, precision, scale
end
visit_AddColumn(o) click to toggle source
# File lib/active_record/connection_adapters/abstract_adapter.rb, line 126
def visit_AddColumn(o)
  sql_type = type_to_sql(o.type.to_sym, o.limit, o.precision, o.scale)
  sql = "ADD #{quote_column_name(o.name)} #{sql_type}"
  add_column_options!(sql, column_options(o))
end
visit_AlterTable(o) click to toggle source
# File lib/active_record/connection_adapters/abstract_adapter.rb, line 121
def visit_AlterTable(o)
  sql = "ALTER TABLE #{quote_table_name(o.name)} "
  sql << o.adds.map { |col| visit_AddColumn col }.join(' ')
end
visit_ColumnDefinition(o) click to toggle source
# File lib/active_record/connection_adapters/abstract_adapter.rb, line 132
def visit_ColumnDefinition(o)
  sql_type = type_to_sql(o.type.to_sym, o.limit, o.precision, o.scale)
  column_sql = "#{quote_column_name(o.name)} #{sql_type}"
  add_column_options!(column_sql, column_options(o)) unless o.primary_key?
  column_sql
end
visit_TableDefinition(o) click to toggle source
# File lib/active_record/connection_adapters/abstract_adapter.rb, line 139
def visit_TableDefinition(o)
  create_sql = "CREATE#{' TEMPORARY' if o.temporary} TABLE "
  create_sql << "#{quote_table_name(o.name)} ("
  create_sql << o.columns.map { |c| accept c }.join(', ')
  create_sql << ") #{o.options}"
  create_sql
end