Class: DataMapper::Adapters::Sql::Mappings::Table
- Defined in:
- lib/data_mapper/adapters/sql/mappings/table.rb
Defined Under Namespace
Classes: Association
Instance Attribute Summary collapse
-
#klass ⇒ Object
readonly
Returns the value of attribute klass.
Instance Method Summary collapse
- #[](column_name) ⇒ Object
- #add_column(column_name, type, options) ⇒ Object
- #associations ⇒ Object
-
#columns ⇒ Object
def has_many_associations @has_many end.
- #create! ⇒ Object
- #default_foreign_key ⇒ Object
- #drop! ⇒ Object
- #exists? ⇒ Boolean
- #find_by_column_name(column_name) ⇒ Object
-
#initialize(adapter, setup_klass) ⇒ Table
constructor
A new instance of Table.
- #inspect ⇒ Object
- #key ⇒ Object
- #name ⇒ Object
- #name=(value) ⇒ Object
- #to_sql ⇒ Object
Constructor Details
#initialize(adapter, setup_klass) ⇒ Table
Returns a new instance of Table.
29 30 31 32 33 34 35 36 37 38 |
# File 'lib/data_mapper/adapters/sql/mappings/table.rb', line 29 def initialize(adapter, setup_klass) raise "\"setup_klass\" must not be nil!" if setup_klass.nil? @adapter = adapter @klass = setup_klass @columns = [] @columns_hash = Hash.new { |h,k| h[k] = @columns.find { |c| c.name == k } } @columns_by_column_name = Hash.new { |h,k| h[k.to_s] = @columns.find { |c| c.column_name == k.to_s } } @has_many = [] @associations = [] end |
Instance Attribute Details
#klass ⇒ Object (readonly)
Returns the value of attribute klass.
27 28 29 |
# File 'lib/data_mapper/adapters/sql/mappings/table.rb', line 27 def klass @klass end |
Instance Method Details
#[](column_name) ⇒ Object
96 97 98 99 |
# File 'lib/data_mapper/adapters/sql/mappings/table.rb', line 96 def [](column_name) return key if column_name == :id @columns_hash[column_name.kind_of?(Symbol) ? column_name : column_name.to_sym] end |
#add_column(column_name, type, options) ⇒ Object
84 85 86 87 88 89 90 91 92 93 94 |
# File 'lib/data_mapper/adapters/sql/mappings/table.rb', line 84 def add_column(column_name, type, ) column = @columns.find { |c| c.name == column_name.to_sym } if column.nil? reset_derived_columns! column = Column.new(@adapter, self, column_name, type, ) @columns.send(column_name == :id ? :unshift : :push, column) end return column end |
#associations ⇒ Object
40 41 42 |
# File 'lib/data_mapper/adapters/sql/mappings/table.rb', line 40 def associations @associations end |
#columns ⇒ Object
def has_many_associations
@has_many
end
52 53 54 55 |
# File 'lib/data_mapper/adapters/sql/mappings/table.rb', line 52 def columns key if @key.nil? @columns end |
#create! ⇒ Object
65 66 67 |
# File 'lib/data_mapper/adapters/sql/mappings/table.rb', line 65 def create! @adapter.save(database, @klass) unless exists? end |
#default_foreign_key ⇒ Object
119 120 121 |
# File 'lib/data_mapper/adapters/sql/mappings/table.rb', line 119 def default_foreign_key @default_foreign_key || (@default_foreign_key = "#{String::memoized_underscore(Inflector.singularize(name))}_id".freeze) end |
#drop! ⇒ Object
61 62 63 |
# File 'lib/data_mapper/adapters/sql/mappings/table.rb', line 61 def drop! @adapter.delete(@klass, :drop => true) if exists? end |
#exists? ⇒ Boolean
57 58 59 |
# File 'lib/data_mapper/adapters/sql/mappings/table.rb', line 57 def exists? @adapter.table_exists?(name) end |
#find_by_column_name(column_name) ⇒ Object
101 102 103 |
# File 'lib/data_mapper/adapters/sql/mappings/table.rb', line 101 def find_by_column_name(column_name) @columns_by_column_name[column_name.kind_of?(String) ? column_name : column_name.to_s] end |
#inspect ⇒ Object
127 128 129 |
# File 'lib/data_mapper/adapters/sql/mappings/table.rb', line 127 def inspect "#<%s:0x%x @klass=%s, @name=%s, @columns=%s>" % [self.class.name, (object_id * 2), @klass.name, to_sql, @columns.inspect] end |
#key ⇒ Object
69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/data_mapper/adapters/sql/mappings/table.rb', line 69 def key if @key.nil? key_column = @columns.find { |c| c.key? } @key = if key_column.nil? column = add_column(:id, :integer, :key => true) @klass.send(:attr_reader, :id) unless @klass.methods.include?(:id) column else key_column end end @key end |
#name ⇒ Object
105 106 107 108 109 110 111 112 113 |
# File 'lib/data_mapper/adapters/sql/mappings/table.rb', line 105 def name @name || begin @name = if @klass.superclass != DataMapper::Base && @klass.superclass != Object @adapter[@klass.superclass].name else Inflector.tableize(@klass.name) end.freeze end end |
#name=(value) ⇒ Object
115 116 117 |
# File 'lib/data_mapper/adapters/sql/mappings/table.rb', line 115 def name=(value) @name = value end |
#to_sql ⇒ Object
123 124 125 |
# File 'lib/data_mapper/adapters/sql/mappings/table.rb', line 123 def to_sql @to_sql || (@to_sql = @adapter.quote_table_name(name).freeze) end |