Module: UsesguidMigrations::ActiveRecordExtensions::ConnectionAdapters::MysqlAdapter

Defined in:
lib/usesguid_migrations/active_record_extensions/connection_adapters/mysql_adapter.rb

Instance Method Summary collapse

Instance Method Details

#foreign_keys(table_name, name = nil) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/usesguid_migrations/active_record_extensions/connection_adapters/mysql_adapter.rb', line 23

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

#primary_key_name(table_name, name = nil) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/usesguid_migrations/active_record_extensions/connection_adapters/mysql_adapter.rb', line 6

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