diff options
Diffstat (limited to 'activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb')
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb | 29 |
1 files changed, 14 insertions, 15 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb b/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb index af2de4f706..116e20999a 100644 --- a/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb @@ -150,17 +150,27 @@ module ActiveRecord def commit_db_transaction() @connection.commit end def rollback_db_transaction() @connection.rollback end - - def tables - execute('.table').map { |table| Table.new(table) } + def tables(name = nil) + execute("SELECT name FROM sqlite_master WHERE type = 'table'", name).map do |row| + row[0] + end end def columns(table_name, name = nil) table_structure(table_name).map { |field| - SQLiteColumn.new(field['name'], field['dflt_value'], field['type']) + SQLiteColumn.new(field['name'], field['dflt_value'], field['type'], field['notnull'] == "0") } end + def indexes(table_name, name = nil) + execute("PRAGMA index_list(#{table_name})", name).map do |row| + index = IndexDefinition.new(table_name, row['name']) + index.unique = row['unique'] != '0' + index.columns = execute("PRAGMA index_info(#{index.name})").map { |col| col['name'] } + index + end + end + def primary_key(table_name) column = table_structure(table_name).find {|field| field['pk'].to_i == 1} column ? column['name'] : nil @@ -222,17 +232,6 @@ module ActiveRecord end end - def indexes(table_name) - execute("PRAGMA index_list(#{table_name})").map do |index| - index_info = execute("PRAGMA index_info(#{index['name']})") - { - :name => index['name'], - :unique => index['unique'].to_i == 1, - :columns => index_info.map {|info| info['name']} - } - end - end - def alter_table(table_name, options = {}) #:nodoc: altered_table_name = "altered_#{table_name}" caller = lambda {|definition| yield definition if block_given?} |