Class: DataMapper::Queries::CreateTableStatement

Inherits:
Object
  • Object
show all
Defined in:
lib/data_mapper/queries/create_table_statement.rb

Instance Method Summary collapse

Constructor Details

#initialize(database, klass) ⇒ CreateTableStatement

Returns a new instance of CreateTableStatement.



6
7
8
# File 'lib/data_mapper/queries/create_table_statement.rb', line 6

def initialize(database, klass)
  @database, @klass = database, klass
end

Instance Method Details

#column_long_form(column) ⇒ Object



24
25
26
27
28
29
30
31
32
33
# File 'lib/data_mapper/queries/create_table_statement.rb', line 24

def column_long_form(column)
  long_form = "#{column.to_sql} #{@database.adapter.class::TYPES[column.type] || column.type}"
  
  long_form << "(#{column.size})" unless column.size.nil?
  long_form << " NOT NULL" unless column.nullable?
  long_form << " " << @database.syntax(:auto_increment) if column.key?
  long_form << " default #{column.options[:default]}" if column.options.has_key?(:default)
  
  return long_form
end

#to_sqlObject



10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/data_mapper/queries/create_table_statement.rb', line 10

def to_sql
  table = @database[@klass]
  
  sql = "CREATE TABLE " << table.to_sql << " ("
  
  sql << table.columns.map do |column|
    column_long_form(column)
  end.join(', ')
  
  sql << ", PRIMARY KEY (#{table.key.to_sql}))"
  
  return sql
end