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

Version Path
usesguid_migrations-1.0.1 lib/usesguid_migrations/active_record_extensions/connection_adapters/mysql_adapter.rb
usesguid_migrations-1.0.0 lib/usesguid_migrations/active_record_extensions/connection_adapters/mysql_adapter.rb