Class: SQL::TableCreator::Column

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(adapter, name, type, opts = {}) ⇒ Column

Returns a new instance of Column.



51
52
53
54
55
56
# File 'lib/sql/table_creator.rb', line 51

def initialize(adapter, name, type, opts = {})
  @adapter = adapter
  @name = name.to_s
  @opts = opts
  @type = build_type(type)
end

Instance Attribute Details

#nameObject

Returns the value of attribute name.



49
50
51
# File 'lib/sql/table_creator.rb', line 49

def name
  @name
end

#typeObject

Returns the value of attribute type.



49
50
51
# File 'lib/sql/table_creator.rb', line 49

def type
  @type
end

Instance Method Details

#build_type(type_class) ⇒ Object



58
59
60
61
62
63
64
65
66
67
68
# File 'lib/sql/table_creator.rb', line 58

def build_type(type_class)
  schema = {:name => @name, :quote_column_name => quoted_name}.merge(@opts)
  schema[:serial?] ||= schema[:serial]
  schema[:nullable?] ||= schema[:nullable] || !schema[:not_null]
  if type_class.is_a?(String)
    schema[:primitive] = type_class
  else
    schema = @adapter.class.type_map[type_class].merge(schema)
  end
  @adapter.property_schema_statement(schema)
end

#quoted_nameObject



74
75
76
# File 'lib/sql/table_creator.rb', line 74

def quoted_name
  @adapter.send(:quote_column_name, name)
end

#to_sqlObject



70
71
72
# File 'lib/sql/table_creator.rb', line 70

def to_sql
  type
end