Sha256: 7990039c93951c045996918334f0109c90e5dbadd2dcd71d709824e528f02215
Contents?: true
Size: 1.68 KB
Versions: 2
Compression:
Stored size: 1.68 KB
Contents
module UsesguidMigrations module ActiveRecordExtensions module ConnectionAdapters module MysqlAdapter def primary_key_name( table_name, name=nil ) results = execute( "SHOW CREATE TABLE `#{table_name}`", name ) keys = [] primary_key = nil results.each do |row| row[1].each do |line| keys << $1 if line =~ /^ [`"](.+?)[`"] varchar\(22\) character set latin1 collate latin1_bin NOT NULL?,?$/ primary_key = $1 if line =~ /^ PRIMARY KEY \([`"](.+?)[`"]\)$/ primary_key = $1 if line =~ /^ PRIMARY KEY \([`"](.+?)[`"]\),$/ primary_key = $1 if line =~ /^ PRIMARY KEY \([`"](.+?)[`"]\), $/ end end return keys.include?( primary_key ) ? primary_key : nil end def foreign_keys( table_name, name=nil ) results = execute( "SHOW CREATE TABLE `#{table_name}`", name ) null_foreign_keys = [] not_null_foreign_keys = [] primary_keys = [] results.each do |row| row[1].each do |line| null_foreign_keys << $1 if line =~ /^ [`"](.+?)[`"] varchar\(22\) character set latin1 collate latin1_bin default NULL?,?$/ not_null_foreign_keys << $1 if line =~ /^ [`"](.+?)[`"] varchar\(22\) character set latin1 collate latin1_bin NOT NULL?,?$/ primary_keys << $1 if line =~ /^ PRIMARY KEY \([`"](.+?)[`"]\)$/ primary_keys << $1 if line =~ /^ PRIMARY KEY \([`"](.+?)[`"]\),$/ end end return null_foreign_keys - primary_keys, not_null_foreign_keys - primary_keys end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems