Class DataMapper::Adapters::Sql::Mappings::Table
In: lib/data_mapper/adapters/sql/mappings/table.rb
lib/data_mapper/adapters/sql/mappings/table.rb
Parent: Object

Methods

[]   []   activate!   activate!   activate_associations!   activate_associations!   activated?   activated?   add_column   add_column   add_composite_index   add_composite_index   associations   associations   columns   columns   conditions   conditions   count   count   create!   create!   database_columns   database_columns   default_foreign_key   default_foreign_key   delete_all!   delete_all!   drop!   drop!   exists?   exists?   flush_sql_caches!   flush_sql_caches!   get_database_columns   get_database_columns   indexes   indexes   insert   insert   inspect   inspect   key   key   keys   keys   mapped_column_exists?   mapped_column_exists?   multi_class?   multi_class?   name   name   name=   name=   new   new   paranoid?   paranoid?   paranoid_column   paranoid_column   quote_table   quote_table   reflect_columns   reflect_columns   schema   schema   temporary=   temporary=   temporary?   temporary?   to_column_exists_sql   to_column_exists_sql   to_columns_sql   to_columns_sql   to_create_composite_index_sql   to_create_composite_index_sql   to_create_index_sql   to_create_index_sql   to_create_sql   to_create_sql   to_drop_sql   to_drop_sql   to_exists_sql   to_exists_sql   to_s   to_s   to_sql   to_sql   to_truncate_sql   to_truncate_sql   truncate!   truncate!   type_column   type_column   unquote_default   unquote_default  

Attributes

columns  [R] 
columns  [R] 
composite_indexes  [R] 
composite_indexes  [R] 
indexes  [R] 
indexes  [R] 
key  [RW] 
key  [RW] 
klass  [R] 
klass  [R] 
name  [R] 
name  [R] 

Public Class methods

[Source]

    # File lib/data_mapper/adapters/sql/mappings/table.rb, line 14
14:           def initialize(adapter, klass_or_name)
15:             raise "\"klass_or_name\" must not be nil!" if klass_or_name.nil?
16:             
17:             @klass = klass_or_name.kind_of?(String) ? nil : klass_or_name
18:             @klass_or_name = klass_or_name
19:             
20:             @adapter = adapter
21:             
22:             @temporary = false
23:             @columns = SortedSet.new
24:             @columns_hash = Hash.new { |h,k| h[k] = columns.find { |c| c.name == k } }
25:             
26:             @associations = AssociationsSet.new
27:             
28:             @multi_class = false
29:             @paranoid = false
30:             @paranoid_column = nil
31:             
32:             if @klass && @klass.respond_to?(:persistent?) && @klass.superclass.respond_to?(:persistent?)
33:               super_table = @adapter.table(@klass.superclass)
34:               
35:               super_table.columns.each do |column|
36:                 self.add_column(column.name, column.type, column.options)
37:               end
38:               
39:               super_table.associations.each do |association|
40:                 @associations << association
41:               end
42:             end
43:           end

[Source]

    # File lib/data_mapper/adapters/sql/mappings/table.rb, line 14
14:           def initialize(adapter, klass_or_name)
15:             raise "\"klass_or_name\" must not be nil!" if klass_or_name.nil?
16:             
17:             @klass = klass_or_name.kind_of?(String) ? nil : klass_or_name
18:             @klass_or_name = klass_or_name
19:             
20:             @adapter = adapter
21:             
22:             @temporary = false
23:             @columns = SortedSet.new
24:             @columns_hash = Hash.new { |h,k| h[k] = columns.find { |c| c.name == k } }
25:             
26:             @associations = AssociationsSet.new
27:             
28:             @multi_class = false
29:             @paranoid = false
30:             @paranoid_column = nil
31:             
32:             if @klass && @klass.respond_to?(:persistent?) && @klass.superclass.respond_to?(:persistent?)
33:               super_table = @adapter.table(@klass.superclass)
34:               
35:               super_table.columns.each do |column|
36:                 self.add_column(column.name, column.type, column.options)
37:               end
38:               
39:               super_table.associations.each do |association|
40:                 @associations << association
41:               end
42:             end
43:           end

Public Instance methods

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 267
267:           def [](column_name)
268:             @columns_hash[column_name.to_sym]
269:           end

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 267
267:           def [](column_name)
268:             @columns_hash[column_name.to_sym]
269:           end

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 443
443:           def activate!
444:             @activated = true
445:             activate_associations!
446:           end

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 443
443:           def activate!
444:             @activated = true
445:             activate_associations!
446:           end

[Source]

    # File lib/data_mapper/adapters/sql/mappings/table.rb, line 81
81:           def activate_associations!(force = false)
82:             @associations.each do |association|
83:               association.activate! force
84:             end
85:           end

[Source]

    # File lib/data_mapper/adapters/sql/mappings/table.rb, line 81
81:           def activate_associations!(force = false)
82:             @associations.each do |association|
83:               association.activate! force
84:             end
85:           end

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 448
448:           def activated?
449:             @activated
450:           end

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 448
448:           def activated?
449:             @activated
450:           end

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 240
240:           def add_column(column_name, type, options = {})
241: 
242:             column_ordinal = if options.is_a?(Hash) && options.has_key?(:ordinal)
243:               options.delete(:ordinal)
244:             else
245:               @columns.size
246:             end
247:             
248:             column = @adapter.class::Mappings::Column.new(@adapter, self, column_name, type, column_ordinal, options)
249:             @columns << column
250:             
251:             if column_name == :type
252:               @multi_class = true
253:               @type_column = column
254:             end
255:             
256:             if column_name.to_s =~ /^deleted\_(at|on)$/
257:               @paranoid = true
258:               @paranoid_column = column
259:             end
260:             
261:             self.flush_sql_caches!
262:             @columns_hash.clear
263:             
264:             return column
265:           end

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 240
240:           def add_column(column_name, type, options = {})
241: 
242:             column_ordinal = if options.is_a?(Hash) && options.has_key?(:ordinal)
243:               options.delete(:ordinal)
244:             else
245:               @columns.size
246:             end
247:             
248:             column = @adapter.class::Mappings::Column.new(@adapter, self, column_name, type, column_ordinal, options)
249:             @columns << column
250:             
251:             if column_name == :type
252:               @multi_class = true
253:               @type_column = column
254:             end
255:             
256:             if column_name.to_s =~ /^deleted\_(at|on)$/
257:               @paranoid = true
258:               @paranoid_column = column
259:             end
260:             
261:             self.flush_sql_caches!
262:             @columns_hash.clear
263:             
264:             return column
265:           end

Add a composite index to the table. index_columns should be an array including each column name.

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 235
235:           def add_composite_index(index_columns = [], unique = false)
236:             @composite_indexes ||= []
237:             @composite_indexes << [index_columns, unique] # add paired tuple with the index
238:           end

Add a composite index to the table. index_columns should be an array including each column name.

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 235
235:           def add_composite_index(index_columns = [], unique = false)
236:             @composite_indexes ||= []
237:             @composite_indexes << [index_columns, unique] # add paired tuple with the index
238:           end

[Source]

    # File lib/data_mapper/adapters/sql/mappings/table.rb, line 77
77:           def associations
78:             @associations
79:           end

[Source]

    # File lib/data_mapper/adapters/sql/mappings/table.rb, line 77
77:           def associations
78:             @associations
79:           end

[Source]

    # File lib/data_mapper/adapters/sql/mappings/table.rb, line 91
91:           def columns
92:             key if @key.nil?
93:             class << self
94:               attr_reader :columns
95:             end
96:             
97:             self.columns
98:           end

[Source]

    # File lib/data_mapper/adapters/sql/mappings/table.rb, line 91
91:           def columns
92:             key if @key.nil?
93:             class << self
94:               attr_reader :columns
95:             end
96:             
97:             self.columns
98:           end

[Source]

    # File lib/data_mapper/adapters/sql/mappings/table.rb, line 49
49:           def conditions(args)
50:             Conditions.new(self, @adapter, @associations.empty?, args)
51:           end

[Source]

    # File lib/data_mapper/adapters/sql/mappings/table.rb, line 49
49:           def conditions(args)
50:             Conditions.new(self, @adapter, @associations.empty?, args)
51:           end

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 161
161:           def count(args={})
162:             sql = "SELECT COUNT(*) AS row_count FROM #{to_sql}"
163:             parameters = []
164:             
165:             paramsql, *parameters = conditions(args).to_params_sql
166:             sql << paramsql #gotta shift it in
167: 
168:             @adapter.connection do |db|              
169:               command = db.create_command(sql)
170:               command.execute_reader(*parameters) do |reader|
171:                 if reader.has_rows?
172:                   reader.current_row.first.to_i
173:                 else
174:                   0
175:                 end
176:               end
177:             end
178:           end

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 161
161:           def count(args={})
162:             sql = "SELECT COUNT(*) AS row_count FROM #{to_sql}"
163:             parameters = []
164:             
165:             paramsql, *parameters = conditions(args).to_params_sql
166:             sql << paramsql #gotta shift it in
167: 
168:             @adapter.connection do |db|              
169:               command = db.create_command(sql)
170:               command.execute_reader(*parameters) do |reader|
171:                 if reader.has_rows?
172:                   reader.current_row.first.to_i
173:                 else
174:                   0
175:                 end
176:               end
177:             end
178:           end

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 127
127:           def create!(force = false)
128:             if exists?
129:               if force
130:                 drop!
131:                 create!
132:               else
133:                 false
134:               end
135:             else
136:               @adapter.connection do |db|
137:                 db.create_command(to_create_sql).execute_non_query
138:                 index_queries = to_create_index_sql + to_create_composite_index_sql
139:                 index_queries.each { |q| db.create_command(q).execute_non_query }
140:                 schema << self
141:                 true
142:               end
143:             end
144:           end

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 127
127:           def create!(force = false)
128:             if exists?
129:               if force
130:                 drop!
131:                 create!
132:               else
133:                 false
134:               end
135:             else
136:               @adapter.connection do |db|
137:                 db.create_command(to_create_sql).execute_non_query
138:                 index_queries = to_create_index_sql + to_create_composite_index_sql
139:                 index_queries.each { |q| db.create_command(q).execute_non_query }
140:                 schema << self
141:                 true
142:               end
143:             end
144:           end
database_columns()
database_columns()

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 296
296:           def default_foreign_key
297:             @default_foreign_key ||= Inflector.foreign_key(@klass_or_name, key.name).freeze
298:           end

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 296
296:           def default_foreign_key
297:             @default_foreign_key ||= Inflector.foreign_key(@klass_or_name, key.name).freeze
298:           end

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 146
146:           def delete_all!
147:             @adapter.connection do |db|
148:               db.create_command("DELETE FROM #{to_sql}").execute_non_query
149:             end
150:             database.identity_map.clear!(name)
151:           end

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 146
146:           def delete_all!
147:             @adapter.connection do |db|
148:               db.create_command("DELETE FROM #{to_sql}").execute_non_query
149:             end
150:             database.identity_map.clear!(name)
151:           end

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 114
114:           def drop!
115:             if exists?
116:               @adapter.connection do |db|
117:                 result = db.create_command(to_drop_sql).execute_non_query
118:                 database.identity_map.clear!(name)
119:                 schema.delete(self)
120:                 true
121:               end
122:             else
123:               false
124:             end
125:           end

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 114
114:           def drop!
115:             if exists?
116:               @adapter.connection do |db|
117:                 result = db.create_command(to_drop_sql).execute_non_query
118:                 database.identity_map.clear!(name)
119:                 schema.delete(self)
120:                 true
121:               end
122:             else
123:               false
124:             end
125:           end

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 105
105:           def exists?
106:             @adapter.connection do |db|
107:               command = db.create_command(to_exists_sql)          
108:               command.execute_reader(name, schema.name) do |reader|
109:                 reader.has_rows?
110:               end
111:             end
112:           end

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 105
105:           def exists?
106:             @adapter.connection do |db|
107:               command = db.create_command(to_exists_sql)          
108:               command.execute_reader(name, schema.name) do |reader|
109:                 reader.has_rows?
110:               end
111:             end
112:           end

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 424
424:           def flush_sql_caches!(flush_columns = true)
425:             @to_column_exists_sql = nil
426:             @to_column_exists_sql = nil
427:             @to_exists_sql = nil
428:             @to_create_sql = nil
429:             @to_drop_sql = nil
430:             @to_sql = nil
431:             @name = nil
432:             @columns_hash.clear
433:             
434:             if flush_columns
435:               @columns.each do |column|
436:                 column.send(:flush_sql_caches!)
437:               end
438:             end
439:             
440:             true
441:           end

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 424
424:           def flush_sql_caches!(flush_columns = true)
425:             @to_column_exists_sql = nil
426:             @to_column_exists_sql = nil
427:             @to_exists_sql = nil
428:             @to_create_sql = nil
429:             @to_drop_sql = nil
430:             @to_sql = nil
431:             @name = nil
432:             @columns_hash.clear
433:             
434:             if flush_columns
435:               @columns.each do |column|
436:                 column.send(:flush_sql_caches!)
437:               end
438:             end
439:             
440:             true
441:           end

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 312
312:           def get_database_columns
313:             columns = []            
314:             @adapter.connection do |db|
315:               command = db.create_command(to_columns_sql)
316:               command.execute_reader(name, schema.name) do |reader|
317:                 columns = reader.map {
318:                   @adapter.class::Mappings::Column.new(@adapter, self, reader.item(1), 
319:                   @adapter.class::TYPES.index(reader.item(2)),reader.item(0).to_i,
320:                   :nullable => reader.item(3).to_i != 99, :default => unquote_default(reader.item(4)))
321:                 }
322:               end
323:             end
324:             columns
325:           end

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 312
312:           def get_database_columns
313:             columns = []            
314:             @adapter.connection do |db|
315:               command = db.create_command(to_columns_sql)
316:               command.execute_reader(name, schema.name) do |reader|
317:                 columns = reader.map {
318:                   @adapter.class::Mappings::Column.new(@adapter, self, reader.item(1), 
319:                   @adapter.class::TYPES.index(reader.item(2)),reader.item(0).to_i,
320:                   :nullable => reader.item(3).to_i != 99, :default => unquote_default(reader.item(4)))
321:                 }
322:               end
323:             end
324:             columns
325:           end

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 227
227:           def indexes
228:                 @indexes || begin
229:                   @indexes = @columns.select { |column| column.index? }
230:                 end
231:           end

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 227
227:           def indexes
228:                 @indexes || begin
229:                   @indexes = @columns.select { |column| column.index? }
230:                 end
231:           end

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 180
180:           def insert(hash)
181:             @adapter.connection do |db|
182:               
183:               columns_to_insert = []
184:               values = []
185:               
186:               hash.each_pair do |k,v|
187:                 column = self[k.to_sym]
188:                 columns_to_insert << (column ? column.to_sql : k)
189:                 values << v
190:               end
191:               
192:               command = db.create_command("INSERT INTO #{to_sql} (#{columns_to_insert.join(', ')}) VALUES (#{values.map { '?' }.join(', ')})")
193:               command.execute_non_query(*values)
194:             end
195:           end

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 180
180:           def insert(hash)
181:             @adapter.connection do |db|
182:               
183:               columns_to_insert = []
184:               values = []
185:               
186:               hash.each_pair do |k,v|
187:                 column = self[k.to_sym]
188:                 columns_to_insert << (column ? column.to_sql : k)
189:                 values << v
190:               end
191:               
192:               command = db.create_command("INSERT INTO #{to_sql} (#{columns_to_insert.join(', ')}) VALUES (#{values.map { '?' }.join(', ')})")
193:               command.execute_non_query(*values)
194:             end
195:           end

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 414
414:           def inspect
415:             "#<%s:0x%x @klass=%s, @name=%s, @columns=%s>" % [
416:               self.class.name,
417:               (object_id * 2),
418:               klass.inspect,
419:               to_sql,
420:               @columns.inspect
421:             ]
422:           end

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 414
414:           def inspect
415:             "#<%s:0x%x @klass=%s, @name=%s, @columns=%s>" % [
416:               self.class.name,
417:               (object_id * 2),
418:               klass.inspect,
419:               to_sql,
420:               @columns.inspect
421:             ]
422:           end

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 197
197:           def key
198:             @key || begin
199:               @key = @columns.find { |column| column.key? }
200:               
201:               if @key.nil?
202:                 unless @klass.nil?
203:                   @klass.send(:property, :id, :integer, :serial => true, :ordinal => -1)
204:                   @key = self[:id]
205:                 else
206:                   @key = add_column(:id, :integer, :serial => true, :ordinal => -1)
207:                 end
208:               end
209:               
210:               @key
211:             end
212:             
213:             class << self
214:               attr_accessor :key
215:             end
216:             Persistence::dependencies.resolve!
217:             
218:             self.key
219:           end

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 197
197:           def key
198:             @key || begin
199:               @key = @columns.find { |column| column.key? }
200:               
201:               if @key.nil?
202:                 unless @klass.nil?
203:                   @klass.send(:property, :id, :integer, :serial => true, :ordinal => -1)
204:                   @key = self[:id]
205:                 else
206:                   @key = add_column(:id, :integer, :serial => true, :ordinal => -1)
207:                 end
208:               end
209:               
210:               @key
211:             end
212:             
213:             class << self
214:               attr_accessor :key
215:             end
216:             Persistence::dependencies.resolve!
217:             
218:             self.key
219:           end

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 221
221:           def keys
222:             @keys || begin
223:               @keys = @columns.select { |column| column.key? }
224:             end
225:           end

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 221
221:           def keys
222:             @keys || begin
223:               @keys = @columns.select { |column| column.key? }
224:             end
225:           end

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 100
100:           def mapped_column_exists?(column_name)
101:             @columns.each {|column| return true if column.name == column_name}
102:             false
103:           end

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 100
100:           def mapped_column_exists?(column_name)
101:             @columns.each {|column| return true if column.name == column_name}
102:             false
103:           end

[Source]

    # File lib/data_mapper/adapters/sql/mappings/table.rb, line 61
61:           def multi_class?
62:             @multi_class
63:           end

[Source]

    # File lib/data_mapper/adapters/sql/mappings/table.rb, line 61
61:           def multi_class?
62:             @multi_class
63:           end

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 271
271:           def name
272:             @name || @name = begin
273:               if @custom_name
274:                 @custom_name
275:               elsif @klass_or_name.kind_of?(String)
276:                 @klass_or_name
277:               elsif @klass_or_name.kind_of?(Class)
278:                 persistent_ancestor = @klass_or_name.superclass.respond_to?(:persistent?)
279:                 if @klass_or_name.superclass.respond_to?(:persistent?)
280:                   @adapter.table(@klass_or_name.superclass).name
281:                 else
282:                   Inflector.tableize(@klass_or_name.name)
283:                 end
284:               else
285:                 raise "+klass_or_name+ (#{@klass_or_name.inspect}) must be a Class or a string containing the name of a table"
286:               end
287:             end.freeze
288:           end

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 271
271:           def name
272:             @name || @name = begin
273:               if @custom_name
274:                 @custom_name
275:               elsif @klass_or_name.kind_of?(String)
276:                 @klass_or_name
277:               elsif @klass_or_name.kind_of?(Class)
278:                 persistent_ancestor = @klass_or_name.superclass.respond_to?(:persistent?)
279:                 if @klass_or_name.superclass.respond_to?(:persistent?)
280:                   @adapter.table(@klass_or_name.superclass).name
281:                 else
282:                   Inflector.tableize(@klass_or_name.name)
283:                 end
284:               else
285:                 raise "+klass_or_name+ (#{@klass_or_name.inspect}) must be a Class or a string containing the name of a table"
286:               end
287:             end.freeze
288:           end

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 290
290:           def name=(value)
291:             flush_sql_caches!
292:             @custom_name = value
293:             self.name
294:           end

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 290
290:           def name=(value)
291:             flush_sql_caches!
292:             @custom_name = value
293:             self.name
294:           end

[Source]

    # File lib/data_mapper/adapters/sql/mappings/table.rb, line 53
53:           def paranoid?
54:             @paranoid
55:           end

[Source]

    # File lib/data_mapper/adapters/sql/mappings/table.rb, line 53
53:           def paranoid?
54:             @paranoid
55:           end

[Source]

    # File lib/data_mapper/adapters/sql/mappings/table.rb, line 57
57:           def paranoid_column
58:             @paranoid_column
59:           end

[Source]

    # File lib/data_mapper/adapters/sql/mappings/table.rb, line 57
57:           def paranoid_column
58:             @paranoid_column
59:           end

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 410
410:           def quote_table
411:             @adapter.quote_table_name(name)
412:           end

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 410
410:           def quote_table
411:             @adapter.quote_table_name(name)
412:           end

[Source]

    # File lib/data_mapper/adapters/sql/mappings/table.rb, line 87
87:           def reflect_columns
88:             @adapter.reflect_columns(self)
89:           end

[Source]

    # File lib/data_mapper/adapters/sql/mappings/table.rb, line 87
87:           def reflect_columns
88:             @adapter.reflect_columns(self)
89:           end

[Source]

    # File lib/data_mapper/adapters/sql/mappings/table.rb, line 45
45:           def schema
46:             @schema || @schema = @adapter.schema
47:           end

[Source]

    # File lib/data_mapper/adapters/sql/mappings/table.rb, line 45
45:           def schema
46:             @schema || @schema = @adapter.schema
47:           end

[Source]

    # File lib/data_mapper/adapters/sql/mappings/table.rb, line 73
73:           def temporary=(value)
74:             @temporary = value
75:           end

[Source]

    # File lib/data_mapper/adapters/sql/mappings/table.rb, line 73
73:           def temporary=(value)
74:             @temporary = value
75:           end

[Source]

    # File lib/data_mapper/adapters/sql/mappings/table.rb, line 69
69:           def temporary?
70:             @temporary
71:           end

[Source]

    # File lib/data_mapper/adapters/sql/mappings/table.rb, line 69
69:           def temporary?
70:             @temporary
71:           end

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 387
387:           def to_column_exists_sql
388:             @to_column_exists_sql || @to_column_exists_sql = "SELECT TABLE_NAME, COLUMN_NAME\nFROM INFORMATION_SCHEMA.COLUMNS\nWHERE TABLE_NAME = ?\nAND COLUMN_NAME = ?\nAND \#{@adapter.database_column_name} = ?\n".compress_lines
389:           end

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 387
387:           def to_column_exists_sql
388:             @to_column_exists_sql || @to_column_exists_sql = "SELECT TABLE_NAME, COLUMN_NAME\nFROM INFORMATION_SCHEMA.COLUMNS\nWHERE TABLE_NAME = ?\nAND COLUMN_NAME = ?\nAND \#{@adapter.database_column_name} = ?\n".compress_lines
389:           end

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 398
398:           def to_columns_sql
399:             @to_column_exists_sql || @to_column_exists_sql = "SELECT ORDINAL_POSITION, COLUMN_NAME, DATA_TYPE,\n(CASE IS_NULLABLE WHEN 'NO' THEN 99 ELSE 0 END),\nCOLUMN_DEFAULT\nFROM INFORMATION_SCHEMA.COLUMNS\nWHERE TABLE_NAME = ?\nAND \#{@adapter.database_column_name} = ?\n".compress_lines
400:           end

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 398
398:           def to_columns_sql
399:             @to_column_exists_sql || @to_column_exists_sql = "SELECT ORDINAL_POSITION, COLUMN_NAME, DATA_TYPE,\n(CASE IS_NULLABLE WHEN 'NO' THEN 99 ELSE 0 END),\nCOLUMN_DEFAULT\nFROM INFORMATION_SCHEMA.COLUMNS\nWHERE TABLE_NAME = ?\nAND \#{@adapter.database_column_name} = ?\n".compress_lines
400:           end

Returns an array with each separate CREATE INDEX statement

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 356
356:           def to_create_composite_index_sql
357:             queries = []
358:             unless composite_indexes.blank?
359:               composite_indexes.each do |columns, unique|
360:                 sql = "CREATE #{unique ? 'UNIQUE ' : ''}INDEX "
361:                 sql << "#{to_s.downcase}_#{columns.join('_')}_index ON "
362:                 sql << "#{to_sql} (#{columns.join(', ')})"
363:                 queries << sql.compress_lines
364:               end
365:             end
366:             queries
367:           end

Returns an array with each separate CREATE INDEX statement

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 356
356:           def to_create_composite_index_sql
357:             queries = []
358:             unless composite_indexes.blank?
359:               composite_indexes.each do |columns, unique|
360:                 sql = "CREATE #{unique ? 'UNIQUE ' : ''}INDEX "
361:                 sql << "#{to_s.downcase}_#{columns.join('_')}_index ON "
362:                 sql << "#{to_sql} (#{columns.join(', ')})"
363:                 queries << sql.compress_lines
364:               end
365:             end
366:             queries
367:           end

Returns an array with each separate CREATE INDEX statement

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 343
343:           def to_create_index_sql
344:             queries = []
345:             unless indexes.blank?
346:               indexes.each do |column|
347:                 sql = "CREATE INDEX #{to_s.downcase}_#{column}_index ON "
348:                 sql << "#{to_sql} (#{column.to_sql})"
349:                 queries << sql.compress_lines
350:               end
351:             end
352:             queries
353:           end

Returns an array with each separate CREATE INDEX statement

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 343
343:           def to_create_index_sql
344:             queries = []
345:             unless indexes.blank?
346:               indexes.each do |column|
347:                 sql = "CREATE INDEX #{to_s.downcase}_#{column}_index ON "
348:                 sql << "#{to_sql} (#{column.to_sql})"
349:                 queries << sql.compress_lines
350:               end
351:             end
352:             queries
353:           end

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 328
328:           def to_create_sql            
329:             @to_create_sql || @to_create_sql = begin
330:               sql = "CREATE"
331:               sql << " TEMPORARY" if temporary?
332:               sql << " TABLE #{to_sql} (#{ columns.map { |c| c.to_long_form }.join(",\n") }"
333:               unless keys.blank? || (keys.size == 1 && keys.first.serial?)
334:                 sql << ", PRIMARY KEY (#{keys.map { |c| c.to_sql }.join(', ') })"
335:               end
336:               sql << ")"
337:               
338:               sql.compress_lines
339:             end
340:           end

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 328
328:           def to_create_sql            
329:             @to_create_sql || @to_create_sql = begin
330:               sql = "CREATE"
331:               sql << " TEMPORARY" if temporary?
332:               sql << " TABLE #{to_sql} (#{ columns.map { |c| c.to_long_form }.join(",\n") }"
333:               unless keys.blank? || (keys.size == 1 && keys.first.serial?)
334:                 sql << ", PRIMARY KEY (#{keys.map { |c| c.to_sql }.join(', ') })"
335:               end
336:               sql << ")"
337:               
338:               sql.compress_lines
339:             end
340:           end

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 373
373:           def to_drop_sql
374:             @to_drop_sql || @to_drop_sql = "DROP TABLE #{to_sql}"
375:           end

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 373
373:           def to_drop_sql
374:             @to_drop_sql || @to_drop_sql = "DROP TABLE #{to_sql}"
375:           end

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 377
377:           def to_exists_sql
378:             @to_exists_sql || @to_exists_sql = "SELECT TABLE_NAME\nFROM INFORMATION_SCHEMA.TABLES\nWHERE TABLE_NAME = ?\nAND \#{@adapter.database_column_name} = ?\n".compress_lines
379:           end

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 377
377:           def to_exists_sql
378:             @to_exists_sql || @to_exists_sql = "SELECT TABLE_NAME\nFROM INFORMATION_SCHEMA.TABLES\nWHERE TABLE_NAME = ?\nAND \#{@adapter.database_column_name} = ?\n".compress_lines
379:           end

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 304
304:           def to_s
305:             name.to_s
306:           end

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 304
304:           def to_s
305:             name.to_s
306:           end

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 300
300:           def to_sql
301:             @to_sql ||= quote_table.freeze
302:           end

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 300
300:           def to_sql
301:             @to_sql ||= quote_table.freeze
302:           end

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 369
369:           def to_truncate_sql
370:             "TRUNCATE TABLE #{to_sql}"
371:           end

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 369
369:           def to_truncate_sql
370:             "TRUNCATE TABLE #{to_sql}"
371:           end

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 153
153:           def truncate!
154:             @adapter.connection do |db|
155:               result = db.create_command(to_truncate_sql).execute_non_query
156:               database.identity_map.clear!(name)
157:               result.to_i > 0
158:             end
159:           end

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 153
153:           def truncate!
154:             @adapter.connection do |db|
155:               result = db.create_command(to_truncate_sql).execute_non_query
156:               database.identity_map.clear!(name)
157:               result.to_i > 0
158:             end
159:           end

[Source]

    # File lib/data_mapper/adapters/sql/mappings/table.rb, line 65
65:           def type_column
66:             @type_column
67:           end

[Source]

    # File lib/data_mapper/adapters/sql/mappings/table.rb, line 65
65:           def type_column
66:             @type_column
67:           end

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 308
308:           def unquote_default(default)
309:             default
310:           end

[Source]

     # File lib/data_mapper/adapters/sql/mappings/table.rb, line 308
308:           def unquote_default(default)
309:             default
310:           end

[Validate]