Class: ActiveRecord::ConnectionAdapters::SQLiteAdapter

Inherits:
AbstractAdapter show all
Defined in:
lib/active_record/connection_adapters/sqlite_adapter.rb

Overview

The SQLite adapter works with both the 2.x and 3.x series of SQLite with the sqlite-ruby drivers (available both as gems and from rubyforge.org/projects/sqlite-ruby/).

Options:

  • :dbfile – Path to the database file.

Direct Known Subclasses

DeprecatedSQLiteAdapter

Instance Method Summary collapse

Methods inherited from AbstractAdapter

#add_column, #add_limit!, #add_limit_with_offset!, #add_limit_without_offset!, #create_table, #drop_table, #initialize, #initialize_schema_information, #quote, #remove_column, #reset_runtime, #structure_dump, #transaction

Constructor Details

This class inherits a constructor from ActiveRecord::ConnectionAdapters::AbstractAdapter

Instance Method Details

#adapter_nameObject



165
166
167
# File 'lib/active_record/connection_adapters/sqlite_adapter.rb', line 165

def adapter_name()
  'SQLite'
end

#begin_db_transactionObject



142
# File 'lib/active_record/connection_adapters/sqlite_adapter.rb', line 142

def begin_db_transaction()    @connection.transaction end

#columns(table_name, name = nil) ⇒ Object



151
152
153
154
155
# File 'lib/active_record/connection_adapters/sqlite_adapter.rb', line 151

def columns(table_name, name = nil)
  table_structure(table_name).map { |field|
    SQLiteColumn.new(field['name'], field['dflt_value'], field['type'])
  }
end

#commit_db_transactionObject



143
# File 'lib/active_record/connection_adapters/sqlite_adapter.rb', line 143

def commit_db_transaction()   @connection.commit      end

#delete(sql, name = nil) ⇒ Object



115
116
117
118
119
# File 'lib/active_record/connection_adapters/sqlite_adapter.rb', line 115

def delete(sql, name = nil)
  sql += " WHERE 1=1" unless sql =~ /WHERE/i
  execute(sql, name)
  @connection.changes
end

#execute(sql, name = nil) ⇒ Object



106
107
108
# File 'lib/active_record/connection_adapters/sqlite_adapter.rb', line 106

def execute(sql, name = nil)
  log(sql, name) { @connection.execute(sql) }
end

#insert(sql, name = nil, pk = nil, id_value = nil) ⇒ Object



121
122
123
124
# File 'lib/active_record/connection_adapters/sqlite_adapter.rb', line 121

def insert(sql, name = nil, pk = nil, id_value = nil)
  execute(sql, name = nil)
  id_value || @connection.last_insert_row_id
end

#native_database_typesObject



90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
# File 'lib/active_record/connection_adapters/sqlite_adapter.rb', line 90

def native_database_types
  {
    :primary_key => "INTEGER PRIMARY KEY NOT NULL",
    :string      => "VARCHAR(255)",
    :text        => "TEXT",
    :integer     => "INTEGER",
    :float       => "float",
    :datetime    => "DATETIME",
    :timestamp   => "DATETIME",
    :time        => "DATETIME",
    :date        => "DATE",
    :binary      => "BLOB",
    :boolean     => "INTEGER"
  }
end

#quote_column_name(name) ⇒ Object



161
162
163
# File 'lib/active_record/connection_adapters/sqlite_adapter.rb', line 161

def quote_column_name(name)
  return "'#{name}'"
end

#quote_string(s) ⇒ Object



157
158
159
# File 'lib/active_record/connection_adapters/sqlite_adapter.rb', line 157

def quote_string(s)
  @connection.class.quote(s)
end

#rollback_db_transactionObject



144
# File 'lib/active_record/connection_adapters/sqlite_adapter.rb', line 144

def rollback_db_transaction() @connection.rollback    end

#select_all(sql, name = nil) ⇒ Object



126
127
128
129
130
131
132
133
134
# File 'lib/active_record/connection_adapters/sqlite_adapter.rb', line 126

def select_all(sql, name = nil)
  execute(sql, name).map do |row|
    record = {}
    row.each_key do |key|
      record[key.sub(/\w+\./, '')] = row[key] unless key.is_a?(Fixnum)
    end
    record
  end
end

#select_one(sql, name = nil) ⇒ Object



136
137
138
139
# File 'lib/active_record/connection_adapters/sqlite_adapter.rb', line 136

def select_one(sql, name = nil)
  result = select_all(sql, name)
  result.nil? ? nil : result.first
end

#tablesObject



147
148
149
# File 'lib/active_record/connection_adapters/sqlite_adapter.rb', line 147

def tables
  execute('.table').map { |table| Table.new(table) }
end

#update(sql, name = nil) ⇒ Object



110
111
112
113
# File 'lib/active_record/connection_adapters/sqlite_adapter.rb', line 110

def update(sql, name = nil)
  execute(sql, name)
  @connection.changes
end