aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb
diff options
context:
space:
mode:
authorJamis Buck <jamis@37signals.com>2005-09-23 13:29:33 +0000
committerJamis Buck <jamis@37signals.com>2005-09-23 13:29:33 +0000
commit7dc45818dc43c163700efc9896a0f3feafa31138 (patch)
treeb9a263bfd2416bfbc9843b563dcc0e2565f2f877 /activerecord/lib/active_record/connection_adapters/mysql_adapter.rb
parent436d54c3f19fc80713d975482a28a95cfa60a1e4 (diff)
downloadrails-7dc45818dc43c163700efc9896a0f3feafa31138.tar.gz
rails-7dc45818dc43c163700efc9896a0f3feafa31138.tar.bz2
rails-7dc45818dc43c163700efc9896a0f3feafa31138.zip
Add ActiveRecord::SchemaDumper for dumping a DB schema to a pure-ruby file, making it easier to consolidate large migration lists and port database schemas between databases.
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@2312 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'activerecord/lib/active_record/connection_adapters/mysql_adapter.rb')
-rwxr-xr-xactiverecord/lib/active_record/connection_adapters/mysql_adapter.rb23
1 files changed, 22 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb b/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb
index 6dbf315396..426d035bae 100755
--- a/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb
+++ b/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb
@@ -102,10 +102,31 @@ module ActiveRecord
result.nil? ? nil : result.first
end
+ def tables(name = nil)
+ tables = []
+ execute("SHOW TABLES", name).each { |field| tables << field[0] }
+ tables
+ end
+
+ def indexes(table_name, name = nil)
+ indexes = []
+ current_index = nil
+ execute("SHOW KEYS FROM #{table_name}", name).each do |row|
+ if current_index != row[2]
+ next if row[2] == "PRIMARY" # skip the primary key
+ current_index = row[2]
+ indexes << IndexDefinition.new(row[0], row[2], row[1] == "0", [])
+ end
+
+ indexes.last.columns << row[4]
+ end
+ indexes
+ end
+
def columns(table_name, name = nil)
sql = "SHOW FIELDS FROM #{table_name}"
columns = []
- execute(sql, name).each { |field| columns << Column.new(field[0], field[4], field[1]) }
+ execute(sql, name).each { |field| columns << Column.new(field[0], field[4], field[1], field[2] == "YES") }
columns
end