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 |
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] |
# 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
# 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
# File lib/data_mapper/adapters/sql/mappings/table.rb, line 267 267: def [](column_name) 268: @columns_hash[column_name.to_sym] 269: end
# File lib/data_mapper/adapters/sql/mappings/table.rb, line 267 267: def [](column_name) 268: @columns_hash[column_name.to_sym] 269: end
# File lib/data_mapper/adapters/sql/mappings/table.rb, line 443 443: def activate! 444: @activated = true 445: activate_associations! 446: end
# File lib/data_mapper/adapters/sql/mappings/table.rb, line 443 443: def activate! 444: @activated = true 445: activate_associations! 446: end
# 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
# 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
# File lib/data_mapper/adapters/sql/mappings/table.rb, line 448 448: def activated? 449: @activated 450: end
# File lib/data_mapper/adapters/sql/mappings/table.rb, line 448 448: def activated? 449: @activated 450: end
# 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
# 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.
# 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.
# 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
# File lib/data_mapper/adapters/sql/mappings/table.rb, line 77 77: def associations 78: @associations 79: end
# File lib/data_mapper/adapters/sql/mappings/table.rb, line 77 77: def associations 78: @associations 79: end
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# File lib/data_mapper/adapters/sql/mappings/table.rb, line 61 61: def multi_class? 62: @multi_class 63: end
# File lib/data_mapper/adapters/sql/mappings/table.rb, line 61 61: def multi_class? 62: @multi_class 63: end
# 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
# 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
# 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
# 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
# File lib/data_mapper/adapters/sql/mappings/table.rb, line 53 53: def paranoid? 54: @paranoid 55: end
# File lib/data_mapper/adapters/sql/mappings/table.rb, line 53 53: def paranoid? 54: @paranoid 55: end
# File lib/data_mapper/adapters/sql/mappings/table.rb, line 57 57: def paranoid_column 58: @paranoid_column 59: end
# File lib/data_mapper/adapters/sql/mappings/table.rb, line 57 57: def paranoid_column 58: @paranoid_column 59: end
# File lib/data_mapper/adapters/sql/mappings/table.rb, line 410 410: def quote_table 411: @adapter.quote_table_name(name) 412: end
# File lib/data_mapper/adapters/sql/mappings/table.rb, line 410 410: def quote_table 411: @adapter.quote_table_name(name) 412: end
# File lib/data_mapper/adapters/sql/mappings/table.rb, line 87 87: def reflect_columns 88: @adapter.reflect_columns(self) 89: end
# File lib/data_mapper/adapters/sql/mappings/table.rb, line 87 87: def reflect_columns 88: @adapter.reflect_columns(self) 89: end
# File lib/data_mapper/adapters/sql/mappings/table.rb, line 45 45: def schema 46: @schema || @schema = @adapter.schema 47: end
# File lib/data_mapper/adapters/sql/mappings/table.rb, line 45 45: def schema 46: @schema || @schema = @adapter.schema 47: end
# File lib/data_mapper/adapters/sql/mappings/table.rb, line 73 73: def temporary=(value) 74: @temporary = value 75: end
# File lib/data_mapper/adapters/sql/mappings/table.rb, line 73 73: def temporary=(value) 74: @temporary = value 75: end
# File lib/data_mapper/adapters/sql/mappings/table.rb, line 69 69: def temporary? 70: @temporary 71: end
# File lib/data_mapper/adapters/sql/mappings/table.rb, line 69 69: def temporary? 70: @temporary 71: end
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# 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
# File lib/data_mapper/adapters/sql/mappings/table.rb, line 304 304: def to_s 305: name.to_s 306: end
# File lib/data_mapper/adapters/sql/mappings/table.rb, line 304 304: def to_s 305: name.to_s 306: end
# File lib/data_mapper/adapters/sql/mappings/table.rb, line 300 300: def to_sql 301: @to_sql ||= quote_table.freeze 302: end
# File lib/data_mapper/adapters/sql/mappings/table.rb, line 300 300: def to_sql 301: @to_sql ||= quote_table.freeze 302: end
# File lib/data_mapper/adapters/sql/mappings/table.rb, line 369 369: def to_truncate_sql 370: "TRUNCATE TABLE #{to_sql}" 371: end
# File lib/data_mapper/adapters/sql/mappings/table.rb, line 369 369: def to_truncate_sql 370: "TRUNCATE TABLE #{to_sql}" 371: end
# 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
# 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
# File lib/data_mapper/adapters/sql/mappings/table.rb, line 65 65: def type_column 66: @type_column 67: end
# File lib/data_mapper/adapters/sql/mappings/table.rb, line 65 65: def type_column 66: @type_column 67: end
# File lib/data_mapper/adapters/sql/mappings/table.rb, line 308 308: def unquote_default(default) 309: default 310: end