aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb
diff options
context:
space:
mode:
authorDavid Heinemeier Hansson <david@loudthinking.com>2005-09-25 17:56:03 +0000
committerDavid Heinemeier Hansson <david@loudthinking.com>2005-09-25 17:56:03 +0000
commitb3df95985a449fd155868b4ec04a556530a03e6c (patch)
treed5ebffef075e2dc6680c4a81adc6ad237835fbfa /activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb
parentea654654226924f9b900e7981fdbdbd452ca15d8 (diff)
downloadrails-b3df95985a449fd155868b4ec04a556530a03e6c.tar.gz
rails-b3df95985a449fd155868b4ec04a556530a03e6c.tar.bz2
rails-b3df95985a449fd155868b4ec04a556530a03e6c.zip
Refactored the AbstractAdapter to be a lot less scary. Cleaned up the docs and style for the OSS adapters
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@2339 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb')
-rw-r--r--activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb91
1 files changed, 53 insertions, 38 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb b/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb
index ab42490020..d1929f74e4 100644
--- a/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb
+++ b/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb
@@ -1,6 +1,5 @@
-# sqlite_adapter.rb
-# author: Luke Holden <lholden@cablelan.net>
-# updated for SQLite3: Jamis Buck <jamis_buck@byu.edu>
+# Author: Luke Holden <lholden@cablelan.net>
+# Updated for SQLite3: Jamis Buck <jamis_buck@byu.edu>
require 'active_record/connection_adapters/abstract_adapter'
@@ -87,7 +86,15 @@ module ActiveRecord
#
# * <tt>:dbfile</tt> -- Path to the database file.
class SQLiteAdapter < AbstractAdapter
- def native_database_types
+ def adapter_name #:nodoc:
+ 'SQLite'
+ end
+
+ def supports_migrations? #:nodoc:
+ true
+ end
+
+ def native_database_types #:nodoc:
{
:primary_key => "INTEGER PRIMARY KEY NOT NULL",
:string => { :name => "varchar", :limit => 255 },
@@ -103,32 +110,41 @@ module ActiveRecord
}
end
- def supports_migrations?
- true
+
+ # QUOTING ==================================================
+
+ def quote_string(s) #:nodoc:
+ @connection.class.quote(s)
+ end
+
+ def quote_column_name(name) #:nodoc:
+ "'#{name}'"
end
- def execute(sql, name = nil)
- #log(sql, name, @connection) { |connection| connection.execute(sql) }
+
+ # DATABASE STATEMENTS ======================================
+
+ def execute(sql, name = nil) #:nodoc:
log(sql, name) { @connection.execute(sql) }
end
- def update(sql, name = nil)
+ def update(sql, name = nil) #:nodoc:
execute(sql, name)
@connection.changes
end
- def delete(sql, name = nil)
+ def delete(sql, name = nil) #:nodoc:
sql += " WHERE 1=1" unless sql =~ /WHERE/i
execute(sql, name)
@connection.changes
end
- def insert(sql, name = nil, pk = nil, id_value = nil, sequence_name = nil)
+ def insert(sql, name = nil, pk = nil, id_value = nil, sequence_name = nil) #:nodoc:
execute(sql, name = nil)
id_value || @connection.last_insert_row_id
end
- def select_all(sql, name = nil)
+ def select_all(sql, name = nil) #:nodoc:
execute(sql, name).map do |row|
record = {}
row.each_key do |key|
@@ -140,29 +156,40 @@ module ActiveRecord
end
end
- def select_one(sql, name = nil)
+ def select_one(sql, name = nil) #:nodoc:
result = select_all(sql, name)
result.nil? ? nil : result.first
end
- def begin_db_transaction() @connection.transaction end
- def commit_db_transaction() @connection.commit end
- def rollback_db_transaction() @connection.rollback end
+ def begin_db_transaction #:nodoc:
+ @connection.transaction
+ end
+
+ def commit_db_transaction #:nodoc:
+ @connection.commit
+ end
+
+ def rollback_db_transaction #:nodoc:
+ @connection.rollback
+ end
- def tables(name = nil)
+
+ # SCHEMA STATEMENTS ========================================
+
+ def tables(name = nil) #:nodoc:
execute("SELECT name FROM sqlite_master WHERE type = 'table'", name).map do |row|
row[0]
end
end
- def columns(table_name, name = nil)
+ def columns(table_name, name = nil) #:nodoc:
table_structure(table_name).map { |field|
SQLiteColumn.new(field['name'], field['dflt_value'], field['type'], field['notnull'] == "0")
}
end
- def indexes(table_name, name = nil)
+ def indexes(table_name, name = nil) #:nodoc:
execute("PRAGMA index_list(#{table_name})", name).map do |row|
index = IndexDefinition.new(table_name, row['name'])
index.unique = row['unique'] != '0'
@@ -171,24 +198,12 @@ module ActiveRecord
end
end
- def primary_key(table_name)
+ def primary_key(table_name) #:nodoc:
column = table_structure(table_name).find {|field| field['pk'].to_i == 1}
column ? column['name'] : nil
end
- def quote_string(s)
- @connection.class.quote(s)
- end
-
- def quote_column_name(name)
- "'#{name}'"
- end
-
- def adapter_name()
- 'SQLite'
- end
-
- def remove_index(table_name, options={})
+ def remove_index(table_name, options={}) #:nodoc:
if Hash === options
index_name = options[:name]
else
@@ -198,25 +213,25 @@ module ActiveRecord
execute "DROP INDEX #{index_name}"
end
- def add_column(table_name, column_name, type, options = {})
+ def add_column(table_name, column_name, type, options = {}) #:nodoc:
alter_table(table_name) do |definition|
definition.column(column_name, type, options)
end
end
- def remove_column(table_name, column_name)
+ def remove_column(table_name, column_name) #:nodoc:
alter_table(table_name) do |definition|
definition.columns.delete(definition[column_name])
end
end
- def change_column_default(table_name, column_name, default)
+ def change_column_default(table_name, column_name, default) #:nodoc:
alter_table(table_name) do |definition|
definition[column_name].default = default
end
end
- def change_column(table_name, column_name, type, options = {})
+ def change_column(table_name, column_name, type, options = {}) #:nodoc:
alter_table(table_name) do |definition|
definition[column_name].instance_eval do
self.type = type
@@ -226,7 +241,7 @@ module ActiveRecord
end
end
- def rename_column(table_name, column_name, new_column_name)
+ def rename_column(table_name, column_name, new_column_name) #:nodoc:
alter_table(table_name, :rename => {column_name => new_column_name})
end