Class: SQL::TableCreator

Inherits:
Object
  • Object
show all
Defined in:
lib/dm-migrations/sql/table_creator.rb

Defined Under Namespace

Classes: Column, SqlExpr

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(adapter, table_name, opts = {}, &block) ⇒ TableCreator

Returns a new instance of TableCreator.



5
6
7
8
9
10
11
12
13
# File 'lib/dm-migrations/sql/table_creator.rb', line 5

def initialize(adapter, table_name, opts = {}, &block)
  @adapter = adapter
  @table_name = table_name.to_s
  @opts = opts

  @columns = []

  self.instance_eval &block
end

Instance Attribute Details

#optsObject

Returns the value of attribute opts.



3
4
5
# File 'lib/dm-migrations/sql/table_creator.rb', line 3

def opts
  @opts
end

#table_nameObject

Returns the value of attribute table_name.



3
4
5
# File 'lib/dm-migrations/sql/table_creator.rb', line 3

def table_name
  @table_name
end

Instance Method Details

#column(name, type, opts = {}) ⇒ Object



19
20
21
# File 'lib/dm-migrations/sql/table_creator.rb', line 19

def column(name, type, opts = {})
  @columns << Column.new(@adapter, name, type, opts)
end

#nowObject

A helper for using the native NOW() SQL function in a default



28
29
30
# File 'lib/dm-migrations/sql/table_creator.rb', line 28

def now
  SqlExpr.new('NOW()')
end

#quoted_table_nameObject



15
16
17
# File 'lib/dm-migrations/sql/table_creator.rb', line 15

def quoted_table_name
  @adapter.send(:quote_name, table_name)
end

#to_sqlObject



23
24
25
# File 'lib/dm-migrations/sql/table_creator.rb', line 23

def to_sql
  "CREATE TABLE #{quoted_table_name} (#{@columns.map{ |c| c.to_sql }.join(', ')})#{@adapter.table_options}"
end

#uuidObject

A helper for using the native UUID() SQL function in a default



33
34
35
# File 'lib/dm-migrations/sql/table_creator.rb', line 33

def uuid
  SqlExpr.new('UUID()')
end