aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb
diff options
context:
space:
mode:
Diffstat (limited to 'activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb')
-rw-r--r--activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb29
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?}